#ifdef PTHREAD_SAMPLE\r
mglWindow gr("test");\r
gr.RunThr();\r
- for(int i=0;i<10;i++) // do calculation\r
+ for(int i=0;i<10;i++) // do calculation\r
{\r
- sleep(1); // which can be very long\r
+#ifdef WIN32\r
+ Sleep(1000);\r
+#else\r
+ sleep(1); // which can be very long\r
+#endif\r
pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);\r
- gr.Clf(); // make new drawing\r
+ gr.Clf(); // make new drawing\r
gr.Line(mglPoint(),pnt,"Ar2");\r
char str[10] = "i=0"; str[3] = '0'+i;\r
gr.Puts(mglPoint(),"");\r
- gr.Update(); // update window\r
+ gr.Update(); // update window\r
}\r
- return 0; // finish calculations and close the window\r
+ return 0; // finish calculations and close the window\r
#else\r
mglWindow *gr;\r
char key = 0;\r
//-----------------------------------------------------------------------------\r
const char *mmgl_flow="subplot 2 2 0 '':title 'Flow plot (default)':box:flow a b\n"\r
"subplot 2 2 1 '':title '\\\'v\\\' style':box:flow a b 'v'\n"\r
-"subplot 2 2 2 '':title 'from edges only':box:flow a b; value -5\n"\r
+"subplot 2 2 2 '':title 'from edges only':box:flow a b '#'\n"\r
"subplot 2 2 3:title '3d variant':rotate 50 60:box:flow ex ey ez\n";\r
void smgl_flow(mglGraph *gr)\r
{\r
gr->Box(); gr->Flow(a,b);\r
if(mini) return;\r
gr->SubPlot(2,2,1,""); gr->Title("'v' style"); gr->Box(); gr->Flow(a,b,"v");\r
- gr->SubPlot(2,2,2,""); gr->Title("from edges only"); gr->Box(); gr->Flow(a,b,"","value -5");\r
+ gr->SubPlot(2,2,2,""); gr->Title("'\\#' style"); gr->Box(); gr->Flow(a,b,"#");\r
mglData ex,ey,ez; mgls_prepare3v(&ex,&ey,&ez);\r
gr->SubPlot(2,2,3); gr->Title("3d variant"); gr->Rotate(50,60);\r
gr->Box(); gr->Flow(ex,ey,ez);\r
//-----------------------------------------------------------------------------\r
const char *mmgl_pipe="subplot 2 2 0 '':title 'Pipe plot (default)':light on:box:pipe a b\n"\r
"subplot 2 2 1 '':title '\\\'i\\\' style':box:pipe a b 'i'\n"\r
-"subplot 2 2 2 '':title 'from edges only':box:pipe a b; value -5\n"\r
+"subplot 2 2 2 '':title 'from edges only':box:pipe a b '#'\n"\r
"subplot 2 2 3:title '3d variant':rotate 50 60:box:pipe ex ey ez '' 0.1\n";\r
void smgl_pipe(mglGraph *gr)\r
{\r
mglData a,b; mgls_prepare2v(&a,&b);\r
- if(!mini) {gr->SubPlot(2,2,0,""); gr->Title("Flow plot (default)");}\r
+ if(!mini) {gr->SubPlot(2,2,0,""); gr->Title("Pipe plot (default)");}\r
gr->Light(true); gr->Box(); gr->Pipe(a,b);\r
if(mini) return;\r
gr->SubPlot(2,2,1,""); gr->Title("'i' style"); gr->Box(); gr->Pipe(a,b,"i");\r
- gr->SubPlot(2,2,2,""); gr->Title("from edges only"); gr->Box(); gr->Pipe(a,b,"",0.05,"value -5");\r
+ gr->SubPlot(2,2,2,""); gr->Title("'\\#' style"); gr->Box(); gr->Pipe(a,b,"#");\r
mglData ex,ey,ez; mgls_prepare3v(&ex,&ey,&ez);\r
gr->SubPlot(2,2,3); gr->Title("3d variant"); gr->Rotate(50,60);\r
gr->Box(); gr->Pipe(ex,ey,ez,"",0.1);\r
{\r
mglData a; mgls_prepare2d(&a);\r
gr->Light(true);\r
- gr->SubPlot(2,1,0); gr->Rotate(50,60+3);\r
+ gr->SubPlot(2,1,0); gr->Rotate(50,60+1);\r
gr->Box(); gr->Surf(a);\r
- gr->SubPlot(2,1,1); gr->Rotate(50,60-3);\r
+ gr->SubPlot(2,1,1); gr->Rotate(50,60-1);\r
gr->Box(); gr->Surf(a);\r
}\r
//-----------------------------------------------------------------------------\r
void Foo::Calc()\r
{\r
for(int i=0;i<30;i++) // do calculation\r
- {\r
- sleep(1); // which can be very long\r
- pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);\r
- Gr->Update(); // update window\r
- }\r
+ {\r
+#ifdef WIN32\r
+ Sleep(1000);\r
+#else\r
+ sleep(1); // which can be very long\r
+#endif\r
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);\r
+ Gr->Update(); // update window\r
+ }\r
}\r
//-----------------------------------------------------\r
int Foo::Draw(mglGraph *gr)\r
case '1': gr = new mglWindow(sample_1,"1D plots",1); break;\r
case '2': gr = new mglWindow(sample_2,"2D plots",1); break;\r
case '3': gr = new mglWindow(sample_3,"3D plots",1); break;\r
- case 'd': gr = new mglWindow(sample_d,"Dual plots",1); break;\r
+ case 'd': gr = new mglWindow(sample_d,"Dual plots",1);break;\r
case 't': gr = new mglWindow(test_wnd,"Testing",1); break;\r
- default: gr = new mglWindow(&foo,"Drop and waves",1); break;\r
+ default: gr = new mglWindow(sample,"Drop and waves",1); break;\r
}\r
gr->Run(); return 0;\r
#endif\r
{\r
float xx,yy,zz; // original coordinates\r
float x,y,z; // coordinates\r
- float c,t; // index in color scheme\r
+ float c,t,ta; // index in color scheme\r
float u,v,w; // normales\r
float r,g,b,a; // RGBA color\r
mglPnt() { xx=yy=zz=x=y=z=c=t=u=v=w=r=g=b=a=0; }\r
{ n=0; Set(cols,smooth,alpha); }\r
void Clear() { n=0; }\r
void Set(const char *cols, int smooth=0,float alpha=1);\r
- void GetC(float u,float v,mglPnt &p);\r
- bool IsSame(mglTexture &t);\r
- void GetRGBA(unsigned char *f); // Write as BGRA for fastest export to TGA\r
+ void GetC(float u,float v,mglPnt &p) const;\r
+ bool IsSame(mglTexture &t) const;\r
+ void GetRGBA(unsigned char *f) const; // Write as BGRA for fastest export to TGA\r
};\r
//-----------------------------------------------------------------------------\r
const mglColor NC(-1,-1,-1);\r
long InUse; ///< Smart pointer (number of users)\r
long Flag; ///< Flags for controlling drawing\r
\r
- inline bool get(long fl) { return Flag&fl; }\r
+ inline bool get(long fl) const { return Flag&fl; }\r
inline void set(long fl) { Flag |= fl; }\r
inline void clr(long fl) { Flag &=~fl; }\r
inline void set(bool v,long fl) { Flag = v ? Flag|fl : Flag&(~fl); }\r
/// Set default palette\r
inline void SetPalette(const char *colors)\r
{ Txt[0].Set(mgl_have_color(colors)?colors:MGL_DEF_PAL,-1); }\r
- inline long GetNumPal(long id) { return Txt[abs(id)/256].n; }\r
+ inline long GetNumPal(long id) const { return Txt[abs(id)/256].n; }\r
/// Set default color scheme\r
inline void SetDefScheme(const char *colors)\r
{ Txt[1].Set(mgl_have_color(colors)?colors:"BbcyrR"); }\r
\r
/// Set warning code ant fill Message\r
void SetWarn(int code, const char *who="");\r
- int inline GetWarn() { return WarnCode; }\r
+ int inline GetWarn() const { return WarnCode; }\r
\r
virtual void StartAutoGroup (const char *)=0;\r
void StartGroup(const char *name, int id);\r
inline void CopyFont(mglBase *gr) { fnt->Copy(gr->GetFont()); }\r
/// Set default font size\r
inline void SetFontSize(float val) { FontSize=val>0 ? val:FontSize*val; }\r
- inline float GetFontSize() { return FontSize; };\r
- inline float TextWidth(const wchar_t *text, const char *font, float size)\r
+ inline float GetFontSize() const { return FontSize; };\r
+ inline float TextWidth(const wchar_t *text, const char *font, float size) const\r
{ return (size<0?-size*FontSize:size)*font_factor*fnt->Width(text,(font&&*font)?font:FontDef)/8; }\r
- inline float TextHeight(const char *font, float size)\r
+ inline float TextHeight(const char *font, float size) const\r
{ return (size<0?-size*FontSize:size)*font_factor*fnt->Height(font?font:FontDef)/8; }\r
- inline float FontFactor() { return font_factor; }\r
- virtual float GetRatio();\r
+ inline float FontFactor() const { return font_factor; }\r
+ virtual float GetRatio() const;\r
/// Set to use or not text rotation\r
inline void SetRotatedText(bool val) { set(val,MGL_ENABLE_RTEXT); }\r
/// Set default font style and color\r
\r
/// Set plot quality\r
virtual void SetQuality(int qual=MGL_DRAW_NORM) { Quality=qual; }\r
- inline int GetQuality() { return Quality; }\r
+ inline int GetQuality() const { return Quality; }\r
\r
// ~~~~~~~~~~~~~~~~~~~~~~ Developer functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
/// Add point to the pntN and return its position\r
inline void SetReduceAcc(bool val) { set(val, MGL_REDUCEACC); }\r
\r
// inline long GetPos() { return Pnt.size()-1; }\r
- inline mglPoint GetPntP(long i)\r
+ inline mglPoint GetPntP(long i) const\r
{ const mglPnt &p=Pnt[i]; return mglPoint(p.x,p.y,p.z); }\r
- inline float GetClrC(long i) { return Pnt[i].c; }\r
- inline long GetPntNum() { return Pnt.size(); }\r
- inline mglPnt &GetPnt(long i) { return Pnt[i]; }\r
- inline mglPrim &GetPrm(long i) { return Prm[i]; }\r
- inline long GetPrmNum() { return Prm.size(); }\r
- inline mglText &GetPtx(long i) { return Ptx[i]; }\r
- inline long GetPtxNum() { return Ptx.size(); }\r
- inline mglTexture &GetTxt(long i){ return Txt[i]; }\r
- inline long GetTxtNum() { return Txt.size(); }\r
+ inline float GetClrC(long i) const { return Pnt[i].c; }\r
+ inline const mglPnt &GetPnt(long i) const { return Pnt[i]; }\r
+ inline long GetPntNum() const { return Pnt.size(); }\r
+ inline mglPrim &GetPrm(long i) { return Prm[i]; }\r
+ inline long GetPrmNum() const { return Prm.size(); }\r
+ inline const mglText &GetPtx(long i) const { return Ptx[i]; }\r
+ inline long GetPtxNum() const { return Ptx.size(); }\r
+ inline const mglTexture &GetTxt(long i) const { return Txt[i]; }\r
+ inline long GetTxtNum() const { return Txt.size(); }\r
/// Scale coordinates and cut off some points\r
- virtual bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true);\r
+ virtual bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true) const;\r
\r
- virtual float GetOrgX(char dir)=0; ///< Get Org.x (parse NAN value)\r
- virtual float GetOrgY(char dir)=0; ///< Get Org.y (parse NAN value)\r
- virtual float GetOrgZ(char dir)=0; ///< Get Org.z (parse NAN value)\r
+ virtual float GetOrgX(char dir) const=0; ///< Get Org.x (parse NAN value)\r
+ virtual float GetOrgY(char dir) const=0; ///< Get Org.y (parse NAN value)\r
+ virtual float GetOrgZ(char dir) const=0; ///< Get Org.z (parse NAN value)\r
\r
/// Get color depending on single variable z, which should be scaled if scale=true\r
- inline float GetC(long s,float z,bool scale = true)\r
+ inline float GetC(long s,float z,bool scale = true) const\r
{ return s+(scale?GetA(z):(z>0?z/MGL_FLT_EPS:0)); }\r
/// Get alpha value depending on single variable \a a\r
- float GetA(float a);\r
+ float GetA(float a) const;\r
/// Set pen/palette\r
char SetPenPal(const char *stl, long *id=0);\r
/// Add texture (like color scheme) and return the position of first color\r
float b[9];\r
float x,y,z,pf;\r
mglMatrix() { clear(); }\r
- inline void clear() { x=y=z=pf=0; memset(b,0,9*sizeof(float)); b[0]=b[4]=b[8]=1; }\r
+ inline void clear() { x=y=z=0; memset(b,0,9*sizeof(float)); b[0]=b[4]=b[8]=1; }\r
inline mglMatrix &operator=(mglMatrix &a)\r
{ x=a.x; y=a.y; z=a.z; pf=a.pf; memcpy(b,a.b,9*sizeof(float)); return *this; }\r
};\r
friend struct mglPrim;\r
public:\r
using mglBase::Light;\r
- mglPoint LastMousePos; ///< Last mouse position\r
\r
mglCanvas(int w=800, int h=600);\r
virtual ~mglCanvas();\r
/// Set size of frame in pixels. Normally this function is called internaly.\r
virtual void SetSize(int w,int h);\r
/// Get ratio (float width)/(float height).\r
- float GetRatio();\r
+ float GetRatio() const;\r
/// Get bitmap data prepared for saving to file\r
virtual unsigned char **GetRGBLines(long &w, long &h, unsigned char *&f, bool alpha=false);\r
/// Get RGB bitmap of current state image.\r
/// Get RGBA bitmap of current state image.\r
const unsigned char *GetRGBA() { Finish(); return G4; }\r
/// Get width of the image\r
- int GetWidth() { return Width; }\r
+ int GetWidth() const { return Width; }\r
/// Get height of the image\r
- int GetHeight() { return Height; }\r
+ int GetHeight() const { return Height; }\r
/// Combine plots from 2 canvases. Result will be saved into this.\r
void Combine(const mglCanvas *gr);\r
/// Send graphical information to node id using MPI\r
void MPI_Send(int id);\r
/// Receive graphical information from node id using MPI\r
void MPI_Recv(int id);\r
- inline float GetDelay() { return Delay; }\r
+ inline float GetDelay() const { return Delay; }\r
inline void SetDelay(float d) { Delay=d; }\r
\r
/// Calculate 3D coordinate {x,y,z} for screen point {xs,ys}\r
- mglPoint CalcXYZ(int xs, int ys);\r
+ mglPoint CalcXYZ(int xs, int ys) const;\r
/// Calculate screen point {xs,ys} for 3D coordinate {x,y,z}\r
- void CalcScr(mglPoint p, int *xs, int *ys);\r
- mglPoint CalcScr(mglPoint p);\r
+ void CalcScr(mglPoint p, int *xs, int *ys) const;\r
+ mglPoint CalcScr(mglPoint p) const;\r
/// Set object/subplot id\r
inline void SetObjId(long id) { ObjId = id; }\r
/// Get object id\r
- inline int GetObjId(long x,long y) { return OI[x+Width*y]; }\r
+ inline int GetObjId(long x,long y) const { return OI[x+Width*y]; }\r
/// Get subplot id\r
- int GetSplId(long x,long y);\r
+ int GetSplId(long x,long y) const;\r
\r
/// Create new frame.\r
virtual int NewFrame();\r
/// Finish frame drawing\r
virtual void EndFrame();\r
/// Get the number of created frames\r
- inline int GetNumFrame() { return CurFrameId; }\r
+ inline int GetNumFrame() const { return CurFrameId; }\r
/// Reset frames counter (start it from zero)\r
inline void ResetFrames() { CurFrameId=0; DrwDat.clear(); }\r
\r
/// Clear ZBuffer only\r
void ClfZB();\r
/// Scale coordinates and cut off some points\r
- bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true);\r
+ bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true) const;\r
void LightScale(); ///< Additionally scale positions of light sources\r
\r
/// Push drawing data (for frames only). NOTE: can be VERY large\r
/// Get drawing data for i-th frame.\r
void GetDrwDat(long i);\r
\r
- float GetOrgX(char dir); ///< Get Org.x (parse NAN value)\r
- float GetOrgY(char dir); ///< Get Org.y (parse NAN value)\r
- float GetOrgZ(char dir); ///< Get Org.z (parse NAN value)\r
+ float GetOrgX(char dir) const; ///< Get Org.x (parse NAN value)\r
+ float GetOrgY(char dir) const; ///< Get Org.y (parse NAN value)\r
+ float GetOrgZ(char dir) const; ///< Get Org.z (parse NAN value)\r
\r
void mark_plot(long p, char type, float size=1); // position in pntC\r
void arrow_plot(long p1, long p2, char st); // position in pntC\r
void glyph_draw(const mglPrim *P, mglDrawReg *d);\r
bool IsSame(const mglPrim &pr,float wp,mglColor cp,int st);\r
\r
+ // functions for multi-threading\r
+ void PreparePrim(bool fast);\r
+ void pxl_combine(unsigned long id, unsigned long n, const void *);\r
+ void pxl_memcpy(unsigned long id, unsigned long n, const void *);\r
+ void pxl_backgr(unsigned long id, unsigned long n, const void *);\r
+ void pxl_primdr(unsigned long id, unsigned long n, const void *);\r
+ void pxl_transform(unsigned long id, unsigned long n, const void *);\r
+ void pxl_setz(unsigned long id, unsigned long n, const void *);\r
+ void pxl_setz_adv(unsigned long id, unsigned long n, const void *);\r
+ void pxl_other(unsigned long id, unsigned long n, const void *p);\r
+ /// Put drawing from other mglCanvas (for multithreading, like subplots)\r
+ void PutDrawReg(mglDrawReg *d, const mglCanvas *gr);\r
+ \r
private:\r
// float _tetx,_tety,_tetz; // extra angles\r
std::vector<mglMatrix> stack; ///< stack for transformation matrixes\r
void tick_draw(mglPoint o, mglPoint d1, mglPoint d2, int f, const char *stl);\r
/// Plot point \a p with color \a c\r
void pnt_plot(long x,long y,float z,const unsigned char c[4]);\r
- float FindOptOrg(char dir, int ind);\r
+ float FindOptOrg(char dir, int ind) const;\r
/// Transform float color and alpha to bits format\r
unsigned char* col2int(const mglPnt &p, unsigned char *r);\r
/// Combine colors in 2 plane.\r
void fast_draw(long p1, long p2, mglDrawReg *d);\r
\r
/// Additionally scale points \a p for positioning in image\r
- void PostScale(mglPoint &p);\r
+ void PostScale(mglPoint &p) const;\r
/// Scale points \a p for projection to the face number \a nface in image\r
long ProjScale(int nface, long p);\r
- inline void PostScale(mglPoint *p,long n) { for(long i=0;i<n;i++) PostScale(p[i]); }\r
+ inline void PostScale(mglPoint *p,long n) const { for(long i=0;i<n;i++) PostScale(p[i]); }\r
\r
// functions for glyph drawing\r
void glyph_fill(const mglPnt &p, float f, int nt, const short *trig, mglDrawReg *d);\r
void glyph_wire(const mglPnt &p, float f, int nl, const short *line, mglDrawReg *d);\r
void glyph_line(const mglPnt &p, float f, bool solid, mglDrawReg *d);\r
- // functions for multi-threading\r
- void pxl_combine(unsigned long id, unsigned long n, const void *);\r
- void pxl_memcpy(unsigned long id, unsigned long n, const void *);\r
- void pxl_backgr(unsigned long id, unsigned long n, const void *);\r
- void pxl_primdr(unsigned long id, unsigned long n, const void *);\r
- void pxl_transform(unsigned long id, unsigned long n, const void *);\r
- void pxl_setz(unsigned long id, unsigned long n, const void *);\r
- void pxl_setz_adv(unsigned long id, unsigned long n, const void *);\r
- void pxl_other(unsigned long id, unsigned long n, const void *p);\r
- /// Put drawing from other mglCanvas (for multithreading, like subplots)\r
- void PutDrawReg(mglDrawReg *d, const mglCanvas *gr);\r
};\r
//-----------------------------------------------------------------------------\r
struct mglThreadG\r
void mgl_label(HMGL gr, char dir, const char *text);\r
void mgl_label_ext(HMGL gr, char dir, const char *text, float pos, float shift);\r
void mgl_labelw_ext(HMGL gr, char dir, const wchar_t *text, float pos, float shift);\r
-void mgl_label_pos(HMGL gr, float x, float y, const char *text, const char *fnt);\r
-void mgl_labelw_pos(HMGL gr, float x, float y, const wchar_t *text, const char *fnt);\r
\r
void mgl_colorbar(HMGL gr, const char *sch);\r
void mgl_colorbar_ext(HMGL gr, const char *sch, float x, float y, float w, float h);\r
void mgl_write_stl(HMGL gr, const char *fname,const char *descr);\r
void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored);\r
void mgl_write_xyz(HMGL gr, const char *fname,const char *descr);\r
-void mgl_write_x3d(HMGL gr, const char *fname,const char *descr);\r
+//void mgl_write_x3d(HMGL gr, const char *fname,const char *descr);\r
void mgl_write_wgl(HMGL gr, const char *fname,const char *descr);\r
void mgl_write_idtf(HMGL gr, const char *fname,const char *descr);\r
void mgl_write_gif(HMGL gr, const char *fname,const char *descr);\r
void mgl_stickplot(HMGL gr, int num, int ind, float tet, float phi);\r
void mgl_title(HMGL gr, const char *title, const char *stl, float size);\r
void mgl_titlew(HMGL gr, const wchar_t *title, const char *stl, float size);\r
+void mgl_set_plotfactor(HMGL gr, float val);\r
\r
void mgl_aspect(HMGL gr, float Ax,float Ay,float Az);\r
void mgl_rotate(HMGL gr, float TetX,float TetZ,float TetY);\r
void mgl_axis_grid_(uintptr_t *gr, const char *dir,const char *pen,int l,int n);\r
void mgl_label_(uintptr_t *gr, const char *dir, const char *text,int,int l);\r
void mgl_label_ext_(uintptr_t *gr, const char *dir, const char *text, float *pos, float *shift,int,int l);\r
-void mgl_label_pos_(uintptr_t *gr, float *x, float *y, const char *txt, const char *fnt,int l,int n);\r
/*****************************************************************************/\r
void mgl_colorbar_(uintptr_t *gr, const char *sch,int l);\r
void mgl_colorbar_ext_(uintptr_t *gr, const char *sch, float *x, float *y, float *w, float *h, int l);\r
void mgl_write_stl_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
void mgl_write_off_(uintptr_t *graph, const char *fname,const char *descr,int *colored,int lf,int ld);\r
void mgl_write_xyz_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
-void mgl_write_wrl_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
-void mgl_write_x3d_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
+//void mgl_write_x3d_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
void mgl_write_tex_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
void mgl_write_wgl_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld);\r
void mgl_set_plotid_(uintptr_t *gr, const char *id,int l);\r
void mgl_columnplot_(uintptr_t *graph, int *num, int *i, float *d);\r
void mgl_gridplot_(uintptr_t *graph, int *nx, int *ny, int *i, float *d);\r
void mgl_stickplot_(uintptr_t *graph, int *num, int *i, float *tet, float *phi);\r
+void mgl_set_plotfactor_(uintptr_t *graph, float *val);\r
\r
void mgl_title_(uintptr_t *gr, const char *title, const char *stl, float *size, int,int);\r
void mgl_aspect_(uintptr_t *graph, float *Ax,float *Ay,float *Az);\r
/*****************************************************************************/\r
HMGL mgl_create_graph_qt(int (*draw)(HMGL gr, void *p), const char *title, void *par, void (*load)(void *p));\r
HMGL mgl_create_graph_fltk(int (*draw)(HMGL gr, void *p), const char *title, void *par, void (*load)(void *p));\r
+void mgl_set_click_func(HMGL gr, void (*func)(void *p));\r
int mgl_fltk_run();\r
int mgl_fltk_thr();\r
int mgl_qt_run();\r
class mglCanvasWnd : public mglCanvas\r
{\r
public:\r
+ mglPoint LastMousePos; ///< Last mouse position\r
+ void (*ClickFunc)(void *par); ///< Callback function on click\r
+\r
mglCanvasWnd();\r
virtual ~mglCanvasWnd();\r
\r
void SetSize(int w,int h);\r
void EndFrame();\r
const unsigned char *GetBits();\r
- inline int GetNumFig() { return NumFig; }\r
- inline int GetCurFig() { return CurFig; }\r
+ inline int GetNumFig() const { return NumFig; }\r
+ inline int GetCurFig() const { return CurFig; }\r
void SetCurFig(int c);\r
void ClearFrames();\r
- inline mglPoint GetMousePos() { return LastMousePos;}\r
+ inline mglPoint GetMousePos() const { return LastMousePos;}\r
inline void SetMousePos(mglPoint p) { LastMousePos=p; }\r
inline void Setup(bool clf_upd=true, bool showpos=false)\r
{ set(showpos,MGL_SHOW_POS); set(clf_upd,MGL_CLF_ON_UPD); }\r
const char *title, void *par=NULL,\r
void (*reload)(void *p)=NULL, bool maximize=false)=0;\r
void SetDrawFunc(int (*draw)(mglBase *gr, void *p), void *par=NULL, void (*reload)(void *p)=NULL);\r
-\r
+ \r
private:\r
- mglPoint LastMousePos; ///< Last mouse position\r
int CurFig; ///< Current figure in the list.\r
\r
unsigned char *GG; ///< images for all frames (may be too LARGE !!!)\r
inline mglData(const mglData &d) { a=0; mgl_data_set(this,&d); }\r
inline mglData(const mglDataA *d) { a=0; mgl_data_set(this, d); }\r
inline mglData(bool, mglData *d) // NOTE: Variable d will be deleted!!!\r
- { if(d) {memcpy(this,d,sizeof(mglData)); d->id=0; d->link=true; delete d; }\r
+ { if(d) {memcpy((void*)this,(void*)d,sizeof(mglData)); d->id=0; d->link=true; delete d; }\r
else { a=0; Create(1); } }\r
/// Initiate by flat array\r
inline mglData(int size, const float *d) { a=0; Set(d,size); }\r
/*****************************************************************************/\r
#ifdef __cplusplus\r
#include "mgl/canvas_wnd.h"\r
+#if MGL_HAVE_FLTK\r
//-----------------------------------------------------------------------------\r
#ifdef __MWERKS__\r
# define FL_DLL\r
//-----------------------------------------------------------------------------\r
void mgl_ask_fltk(const wchar_t *quest, wchar_t *res);\r
//-----------------------------------------------------------------------------\r
+#else\r
+#error "Please enable FLTK support"\r
+#endif\r
#endif\r
#endif\r
#define MGL_DEF_FONT_NAME "STIX"\r
#endif\r
//-----------------------------------------------------------------------------\r
-struct mglTeXsymb { unsigned kod; const wchar_t *tex; };
-/// Get font color, style and align for internal parser
+struct mglTeXsymb { unsigned kod; const wchar_t *tex; };\r
+/// Get font color, style and align for internal parser\r
char mglGetStyle(const char *how, int *font, int *align=0);\r
class mglBase;\r
//-----------------------------------------------------------------------------\r
/// Load font data to memory. Normally used by constructor.\r
bool Load(const char *base, const char *path=0);\r
/// Free memory\r
- void Clear();
+ void Clear();\r
/// Copy data from other font\r
void Copy(mglFont *);\r
/// Restore default font\r
void Restore();\r
/// Return true if font is loaded\r
- inline bool Ready() { return numg!=0; };\r
+ inline bool Ready() const { return numg!=0; };\r
\r
/// Get height of text\r
- float Height(int font);\r
+ float Height(int font) const;\r
/// Get height of text\r
- float Height(const char *how);\r
+ float Height(const char *how) const;\r
/// Print text string for font specified by string\r
- float Puts(const char *str,const char *how,float col);\r
+ float Puts(const char *str,const char *how,float col) const;\r
/// Get width of text string for font specified by string\r
- float Width(const char *str,const char *how);\r
+ float Width(const char *str,const char *how) const;\r
/// Print text string for font specified by string\r
- float Puts(const wchar_t *str,const char *how,float col);\r
+ float Puts(const wchar_t *str,const char *how,float col) const;\r
/// Get width of text string for font specified by string\r
- float Width(const wchar_t *str,const char *how);
+ float Width(const wchar_t *str,const char *how) const;\r
\r
/// Return number of glyphs\r
- inline unsigned GetNumGlyph() { return numg; };\r
+ inline unsigned GetNumGlyph() const { return numg; };\r
/// Return some of pointers\r
- inline const short *GetTr(int s, long j) { return Buf+tr[s][j]; };\r
- inline const short *GetLn(int s, long j) { return Buf+ln[s][j]; };\r
- inline int GetNt(int s, long j) { return numt[s][j]; };\r
- inline int GetNl(int s, long j) { return numl[s][j]; };\r
- inline float GetFact(int s) { return fact[s]; };\r
+ inline const short *GetTr(int s, long j) const { return Buf+tr[s][j]; };\r
+ inline const short *GetLn(int s, long j) const { return Buf+ln[s][j]; };\r
+ inline int GetNt(int s, long j) const { return numt[s][j]; };\r
+ inline int GetNl(int s, long j) const { return numl[s][j]; };\r
+ inline float GetFact(int s) const { return fact[s]; };\r
protected:\r
wchar_t *id; ///< Unicode ID for glyph\r
unsigned *tr[4]; ///< Shift of glyph description by triangles (for solid font)\r
unsigned numg; ///< Number of glyphs\r
short *Buf; ///< Buffer for glyph descriptions\r
long numb; ///< Buffer size\r
-
+\r
/// Print text string for font specified by integer constant\r
- float Puts(const wchar_t *str,int font,int align, float col);\r
+ float Puts(const wchar_t *str,int font,int align, float col) const;\r
/// Get width of text string for font specified by integer constant\r
- float Width(const wchar_t *str,int font=0);\r
+ float Width(const wchar_t *str,int font=0) const;\r
/// Replace TeX symbols by its UTF code and add font styles\r
- void Convert(const wchar_t *str, unsigned *res);\r
-
+ void Convert(const wchar_t *str, unsigned *res) const;\r
+\r
/// Draw string recursively\r
/* x,y - position, f - factor, style: 0x1 - italic, 0x2 - bold, 0x4 - overline, 0x8 - underline, 0x10 - empty (not draw) */\r
- float Puts(const unsigned *str, float x,float y,float f,int style,float col);\r
+ float Puts(const unsigned *str, float x,float y,float f,int style,float col) const;\r
/// Parse LaTeX command\r
- unsigned Parse(const wchar_t *s);\r
+ unsigned Parse(const wchar_t *s) const;\r
/// Get internal code for symbol\r
- long Internal(unsigned s);\r
+ long Internal(unsigned s) const;\r
\r
/// Get symbol for character \a ch with given \a font style\r
- unsigned Symbol(char ch);\r
+ unsigned Symbol(char ch) const;\r
private:\r
- float get_ptr(long &i,unsigned *str, unsigned **b1, unsigned **b2,float &w1,float &w2, float f1, float f2, int st);\r
+ float get_ptr(long &i,unsigned *str, unsigned **b1, unsigned **b2,float &w1,float &w2, float f1, float f2, int st) const;\r
bool read_data(const char *fname, float *ff, short *wdt, short *numl, unsigned *posl, short *numt, unsigned *post, unsigned &cur);\r
void main_copy();\r
bool read_main(const char *fname, unsigned &cur);\r
void mem_alloc();\r
bool read_def(unsigned &cur);\r
- void draw_ouline(int st, float x, float y, float f, float g, float ww, float ccol);\r
+ void draw_ouline(int st, float x, float y, float f, float g, float ww, float ccol) const;\r
};\r
//-----------------------------------------------------------------------------\r
#endif\r
inline void StickPlot(int num, int i, float tet, float phi)\r
{ mgl_stickplot(gr,num,i,tet,phi); }\r
\r
+ /// Set PlotFactor\r
+ inline void SetPlotFactor(float val)\r
+ { mgl_set_plotfactor(gr,val); }\r
+ /// Push transformation matrix into stack\r
+ inline void Push() { mgl_mat_push(gr); }\r
+ /// Pop transformation matrix from stack\r
+ inline void Pop() { mgl_mat_pop(gr); }\r
+ \r
/// Add title for current subplot/inplot\r
inline void Title(const char *title,const char *stl="",float size=-2)\r
{ mgl_title(gr,title,stl,size); }\r
{ mgl_putsw_dir(gr, p.x, p.y, p.z, d.x, d.y, d.z, text, font, size); }\r
inline void Puts(mglPoint p, mglPoint d, const char *text, const char *font=":L", float size=-1)\r
{ mgl_puts_dir(gr, p.x, p.y, p.z, d.x, d.y, d.z, text, font, size); }\r
- /// Print the label \a text at arbitrary position {x,y} of plot.\r
- void Label(double x, double y, const char *text, const char *fnt=0)\r
- { mgl_label_pos(gr,x,y,text,fnt); }\r
- void Label(double x, double y, const wchar_t *text, const char *fnt=0)\r
- { mgl_labelw_pos(gr,x,y,text,fnt); }\r
\r
/// Print text along the curve\r
inline void Text(const mglDataA &x, const mglDataA &y, const mglDataA &z, const char *text, const char *font="", const char *opt="")\r
~mglCanvasGL();\r
\r
void SetQuality(int =0) { Quality=2; }\r
- void Finish();\r
+ void Finish(bool fast=true);\r
void SetSize(int ,int ) {}\r
void View(float tetX,float tetY,float tetZ);\r
int NewFrame();\r
#ifdef __cplusplus\r
//-----------------------------------------------------------------------------\r
#include "mgl/canvas_wnd.h"\r
+#if MGL_HAVE_QT\r
#include <QtGui/QWidget>\r
#include <QtGui/QPixmap>\r
//-----------------------------------------------------------------------------\r
void exportOBJ(QString fname=""); ///< export to OBJ file\r
void exportSTL(QString fname=""); ///< export to STL file\r
void exportOFF(QString fname=""); ///< export to OFF file\r
- void exportX3D(QString fname=""); ///< export to XYZ file\r
+// void exportX3D(QString fname=""); ///< export to XYZ file\r
void exportIDTF(QString fname=""); ///< export to IDTF file\r
void setMGLFont(QString path); ///< restore/load font for graphics\r
\r
//-----------------------------------------------------------------------------\r
void mgl_ask_qt(const wchar_t *quest, wchar_t *res);\r
//-----------------------------------------------------------------------------\r
+#else\r
+#error "Please enable Qt support"\r
+#endif\r
#endif\r
#endif\r
{\r
virtual int Draw(mglGraph *)=0; ///< Function for drawing\r
virtual void Reload() {} ///< Function for reloading data\r
+ virtual void Click() {} ///< Callback function on mouse click\r
#if MGL_HAVE_PTHREAD\r
pthread_t thr;\r
bool running;\r
int mgl_draw_graph(mglBase *gr, void *p);\r
// NOTE: mgl_draw_class() and mgl_draw_load() use mglWindow* only. Don't use it with inherited classes\r
int mgl_draw_class(mglBase *gr, void *p);\r
+void mgl_click_class(void *p);\r
void mgl_reload_class(void *p);\r
//-----------------------------------------------------------------------------\r
#if MGL_HAVE_QT\r
class mglWindow : public mglGraph\r
{\r
friend int mgl_draw_class(mglBase *gr, void *p);\r
+friend void mgl_click_class(void *p);\r
friend void mgl_reload_class(void *p);\r
protected:\r
mglDraw *dr;\r
wnd=kind; dr=draw;\r
if(wnd==1) gr = mgl_create_graph_qt(mgl_draw_class,title,this,mgl_reload_class);\r
else gr = mgl_create_graph_fltk(mgl_draw_class,title,this,mgl_reload_class);\r
+ mgl_set_click_func(gr, mgl_click_class);\r
}\r
inline int Run() ///< Run main loop for event handling\r
{ return (wnd==1)? mgl_qt_run() : mgl_fltk_run(); }\r
{ mgl_wnd_prev_frame(gr); }\r
inline void Animation() ///< Run slideshow (animation) of frames\r
{ mgl_wnd_animation(gr); }\r
+ void SetClickFunc(void (*func)(void *p))\r
+ { if(!dr) mgl_set_click_func(gr,func); }\r
\r
inline void SetDelay(float dt) ///< Delay for animation in seconds\r
{ mgl_wnd_set_delay(gr, dt); }\r
if(MGL_HAVE_PYTHON)
- configure_file(${MathGL_SOURCE_DIR}/lang/mgl.i ${MathGL_BINARY_DIR}/lang/mgl.i COPYONLY)
- configure_file(${MathGL_SOURCE_DIR}/lang/numpy.i ${MathGL_BINARY_DIR}/lang/numpy.i COPYONLY)
+ configure_file(${MathGL_SOURCE_DIR}/lang/mgl.i.in ${MathGL_BINARY_DIR}/lang/mgl.i COPYONLY)
+ configure_file(${MathGL_SOURCE_DIR}/lang/numpy.i.in ${MathGL_BINARY_DIR}/lang/numpy.i COPYONLY)
SET(dep_libs mgl)
# if(MGL_HAVE_FLTK)
get_property(path_to_mglwnd TARGET mgl-wnd PROPERTY LOCATION)
)
add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py)
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )")
- set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "mgl.i;numpy.i;setup.py;mgl_wrap.cpp;build;mathgl.pyc")
+ set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "setup.py;mgl_wrap.cpp;build;mathgl.pyc")
endif(MGL_HAVE_PYTHON)
+++ /dev/null
-/***************************************************************************
- * mgl.i is part of Math Graphic Library
- * Copyright (C) 2007 Alexey Balakin <balakin@appl.sci-nnov.ru>,
- * Xavier Delacour <xavier.delacour@gmail.com>,
- * Alexander Filov <alexander.filov@gmail.com> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-%module mathgl
-#ifdef SWIGOCTAVE
-%feature("autodoc", 1);
-#endif // SWIGOCTAVE
-
-%ignore operator!;
-%ignore operator=;
-%ignore *::operator=;
-%ignore *::operator+=;
-%ignore *::operator-=;
-%ignore *::operator*=;
-%ignore *::operator/=;
-//%ignore mglDataA
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "mgl/config.h"
-#include "mgl/type.h"
-#include "mgl/data.h"
-#include "mgl/mgl.h"
-#include "mgl/window.h"
-%}
-
-#if MGL_USE_DOUBLE
-typedef double mreal;
-#else
-typedef float mreal;
-#endif
-
-
-#ifdef SWIGOCTAVE
-%rename(__add) operator+;
-%rename(__sub) operator-;
-%rename(__mul) operator*;
-%rename(__div) operator/;
-%rename(__eq) operator==;
-%rename(__ne) operator!=;
-//%typemap(in,noblock=1) (double* d, int rows, int cols) (Matrix tmp) {
-// if (!$input.is_matrix_type()) {
-// error("A must be a matrix");
-// SWIG_fail;
-// }
-// tmp=$input.matrix_value();
-// $1=tmp.data();
-// $2=tmp.rows();
-// $3=tmp.columns();
-//}
-#endif
-
-#ifdef SWIGPYTHON
-%rename(__add__) *::operator+(const mglData&, const mglData&);
-%rename(__sub__) *::operator-(const mglData&, const mglData &);
-%rename(__mul__) *::operator*(const mglData &, float);
-%rename(__div__) *::operator/(const mglData &, float);
-
-// Get the NumPy typemaps
-%include "numpy.i"
-%init %{
-import_array();
-%}
-%apply (double* IN_ARRAY1, int DIM1) {(const double* d, int size)};
-%apply (int DIM1, double* IN_ARRAY1) {(int size, const double* d)};
-%apply (double* IN_ARRAY2, int DIM1, int DIM2) {(const double* d, int rows, int cols)};
-%apply (int DIM1, int DIM2, double* IN_ARRAY2) {(int rows, int cols, const double* d)};
-%apply (double* IN_ARRAY3, int DIM1, int DIM2, int DIM3) {(const double* d, int rows, int cols, int slc)};
-%apply (int DIM1, int DIM2, int DIM3, double* IN_ARRAY3) {(int rows, int cols, int slc, const double* d)};
-#endif
-
-%include "mgl/config.h"
-%include "mgl/type.h"
-%include "mgl/data.h"
-%include "mgl/mgl.h"
-%include "mgl/window.h"
-%extend mglData
-{
- float __getitem__( int i) { return self->GetVal(i); };
- float __paren( int i) { return self->GetVal(i); };
- void __setitem__( int i, float y) { self->SetVal(y,i); };
- void __paren_asgn( int i, float y) { self->SetVal(y,i); };
-};
--- /dev/null
+/***************************************************************************
+ * mgl.i is part of Math Graphic Library
+ * Copyright (C) 2007 Alexey Balakin <balakin@appl.sci-nnov.ru>,
+ * Xavier Delacour <xavier.delacour@gmail.com>,
+ * Alexander Filov <alexander.filov@gmail.com> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+%module mathgl
+#ifdef SWIGOCTAVE
+%feature("autodoc", 1);
+#endif // SWIGOCTAVE
+
+%ignore operator!;
+%ignore operator=;
+%ignore *::operator=;
+%ignore *::operator+=;
+%ignore *::operator-=;
+%ignore *::operator*=;
+%ignore *::operator/=;
+//%ignore mglDataA
+
+%{
+#define SWIG_FILE_WITH_INIT
+//#include "mgl/config.h"
+#include "mgl/type.h"
+#include "mgl/data.h"
+#include "mgl/mgl.h"
+#include "mgl/window.h"
+%}
+
+#if MGL_USE_DOUBLE
+typedef double mreal;
+#else
+typedef float mreal;
+#endif
+
+
+#ifdef SWIGOCTAVE
+%rename(__add) operator+;
+%rename(__sub) operator-;
+%rename(__mul) operator*;
+%rename(__div) operator/;
+%rename(__eq) operator==;
+%rename(__ne) operator!=;
+//%typemap(in,noblock=1) (double* d, int rows, int cols) (Matrix tmp) {
+// if (!$input.is_matrix_type()) {
+// error("A must be a matrix");
+// SWIG_fail;
+// }
+// tmp=$input.matrix_value();
+// $1=tmp.data();
+// $2=tmp.rows();
+// $3=tmp.columns();
+//}
+#endif
+
+#ifdef SWIGPYTHON
+%rename(__add__) *::operator+(const mglData&, const mglData&);
+%rename(__sub__) *::operator-(const mglData&, const mglData &);
+%rename(__mul__) *::operator*(const mglData &, float);
+%rename(__div__) *::operator/(const mglData &, float);
+
+// Get the NumPy typemaps
+%include "numpy.i"
+%init %{
+import_array();
+%}
+%apply (double* IN_ARRAY1, int DIM1) {(const double* d, int size)};
+%apply (int DIM1, double* IN_ARRAY1) {(int size, const double* d)};
+%apply (double* IN_ARRAY2, int DIM1, int DIM2) {(const double* d, int rows, int cols)};
+%apply (int DIM1, int DIM2, double* IN_ARRAY2) {(int rows, int cols, const double* d)};
+%apply (double* IN_ARRAY3, int DIM1, int DIM2, int DIM3) {(const double* d, int rows, int cols, int slc)};
+%apply (int DIM1, int DIM2, int DIM3, double* IN_ARRAY3) {(int rows, int cols, int slc, const double* d)};
+#endif
+
+//%include "mgl/config.h"
+%include "mgl/type.h"
+%include "mgl/data.h"
+%include "mgl/mgl.h"
+%include "mgl/window.h"
+%extend mglData
+{
+ float __getitem__( int i) { return self->GetVal(i); };
+ float __paren( int i) { return self->GetVal(i); };
+ void __setitem__( int i, float y) { self->SetVal(y,i); };
+ void __paren_asgn( int i, float y) { self->SetVal(y,i); };
+};
+++ /dev/null
-/* -*- C -*- (not really, but good for syntax highlighting) */
-#ifdef SWIGPYTHON
-
-%{
-#ifndef SWIG_FILE_WITH_INIT
-# define NO_IMPORT_ARRAY
-#endif
-#include "stdio.h"
-#include <numpy/arrayobject.h>
-%}
-
-/**********************************************************************/
-
-%fragment("NumPy_Backward_Compatibility", "header")
-{
-/* Support older NumPy data type names
-*/
-%#if NDARRAY_VERSION < 0x01000000
-%#define NPY_BOOL PyArray_BOOL
-%#define NPY_BYTE PyArray_BYTE
-%#define NPY_UBYTE PyArray_UBYTE
-%#define NPY_SHORT PyArray_SHORT
-%#define NPY_USHORT PyArray_USHORT
-%#define NPY_INT PyArray_INT
-%#define NPY_UINT PyArray_UINT
-%#define NPY_LONG PyArray_LONG
-%#define NPY_ULONG PyArray_ULONG
-%#define NPY_LONGLONG PyArray_LONGLONG
-%#define NPY_ULONGLONG PyArray_ULONGLONG
-%#define NPY_FLOAT PyArray_FLOAT
-%#define NPY_DOUBLE PyArray_DOUBLE
-%#define NPY_LONGDOUBLE PyArray_LONGDOUBLE
-%#define NPY_CFLOAT PyArray_CFLOAT
-%#define NPY_CDOUBLE PyArray_CDOUBLE
-%#define NPY_CLONGDOUBLE PyArray_CLONGDOUBLE
-%#define NPY_OBJECT PyArray_OBJECT
-%#define NPY_STRING PyArray_STRING
-%#define NPY_UNICODE PyArray_UNICODE
-%#define NPY_VOID PyArray_VOID
-%#define NPY_NTYPES PyArray_NTYPES
-%#define NPY_NOTYPE PyArray_NOTYPE
-%#define NPY_CHAR PyArray_CHAR
-%#define NPY_USERDEF PyArray_USERDEF
-%#define npy_intp intp
-
-%#define NPY_MAX_BYTE MAX_BYTE
-%#define NPY_MIN_BYTE MIN_BYTE
-%#define NPY_MAX_UBYTE MAX_UBYTE
-%#define NPY_MAX_SHORT MAX_SHORT
-%#define NPY_MIN_SHORT MIN_SHORT
-%#define NPY_MAX_USHORT MAX_USHORT
-%#define NPY_MAX_INT MAX_INT
-%#define NPY_MIN_INT MIN_INT
-%#define NPY_MAX_UINT MAX_UINT
-%#define NPY_MAX_LONG MAX_LONG
-%#define NPY_MIN_LONG MIN_LONG
-%#define NPY_MAX_ULONG MAX_ULONG
-%#define NPY_MAX_LONGLONG MAX_LONGLONG
-%#define NPY_MIN_LONGLONG MIN_LONGLONG
-%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
-%#define NPY_MAX_INTP MAX_INTP
-%#define NPY_MIN_INTP MIN_INTP
-
-%#define NPY_FARRAY FARRAY
-%#define NPY_F_CONTIGUOUS F_CONTIGUOUS
-%#endif
-}
-
-/**********************************************************************/
-
-/* The following code originally appeared in
- * enthought/kiva/agg/src/numeric.i written by Eric Jones. It was
- * translated from C++ to C by John Hunter. Bill Spotz has modified
- * it to fix some minor bugs, upgrade from Numeric to numpy (all
- * versions), add some comments and functionality, and convert from
- * direct code insertion to SWIG fragments.
- */
-
-%fragment("NumPy_Macros", "header")
-{
-/* Macros to extract array attributes.
- */
-%#define is_array(a) ((a) && PyArray_Check((PyArrayObject *)a))
-%#define array_type(a) (int)(PyArray_TYPE(a))
-%#define array_numdims(a) (((PyArrayObject *)a)->nd)
-%#define array_dimensions(a) (((PyArrayObject *)a)->dimensions)
-%#define array_size(a,i) (((PyArrayObject *)a)->dimensions[i])
-%#define array_data(a) (((PyArrayObject *)a)->data)
-%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS(a))
-%#define array_is_native(a) (PyArray_ISNOTSWAPPED(a))
-%#define array_is_fortran(a) (PyArray_ISFORTRAN(a))
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Utilities", "header")
-{
- /* Given a PyObject, return a string describing its type.
- */
- char* pytype_string(PyObject* py_obj) {
- if (py_obj == NULL ) return "C NULL value";
- if (py_obj == Py_None ) return "Python None" ;
- if (PyCallable_Check(py_obj)) return "callable" ;
- if (PyString_Check( py_obj)) return "string" ;
- if (PyInt_Check( py_obj)) return "int" ;
- if (PyFloat_Check( py_obj)) return "float" ;
- if (PyDict_Check( py_obj)) return "dict" ;
- if (PyList_Check( py_obj)) return "list" ;
- if (PyTuple_Check( py_obj)) return "tuple" ;
- if (PyFile_Check( py_obj)) return "file" ;
- if (PyModule_Check( py_obj)) return "module" ;
- if (PyInstance_Check(py_obj)) return "instance" ;
-
- return "unknow type";
- }
-
- /* Given a NumPy typecode, return a string describing the type.
- */
- char* typecode_string(int typecode) {
- static char* type_names[25] = {"bool", "byte", "unsigned byte",
- "short", "unsigned short", "int",
- "unsigned int", "long", "unsigned long",
- "long long", "unsigned long long",
- "float", "double", "long double",
- "complex float", "complex double",
- "complex long double", "object",
- "string", "unicode", "void", "ntypes",
- "notype", "char", "unknown"};
- return typecode < 24 ? type_names[typecode] : type_names[24];
- }
-
- /* Make sure input has correct numpy type. Allow character and byte
- * to match. Also allow int and long to match. This is deprecated.
- * You should use PyArray_EquivTypenums() instead.
- */
- int type_match(int actual_type, int desired_type) {
- return PyArray_EquivTypenums(actual_type, desired_type);
- }
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Object_to_Array", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros",
- fragment="NumPy_Utilities")
-{
- /* Given a PyObject pointer, cast it to a PyArrayObject pointer if
- * legal. If not, set the python error string appropriately and
- * return NULL.
- */
- PyArrayObject* obj_to_array_no_conversion(PyObject* input, int typecode)
- {
- PyArrayObject* ary = NULL;
- if (is_array(input) && (typecode == NPY_NOTYPE ||
- PyArray_EquivTypenums(array_type(input), typecode)))
- {
- ary = (PyArrayObject*) input;
- }
- else if is_array(input)
- {
- char* desired_type = typecode_string(typecode);
- char* actual_type = typecode_string(array_type(input));
- PyErr_Format(PyExc_TypeError,
- "Array of type '%s' required. Array of type '%s' given",
- desired_type, actual_type);
- ary = NULL;
- }
- else
- {
- char * desired_type = typecode_string(typecode);
- char * actual_type = pytype_string(input);
- PyErr_Format(PyExc_TypeError,
- "Array of type '%s' required. A '%s' was given",
- desired_type, actual_type);
- ary = NULL;
- }
- return ary;
- }
-
- /* Convert the given PyObject to a NumPy array with the given
- * typecode. On success, return a valid PyArrayObject* with the
- * correct type. On failure, the python error string will be set and
- * the routine returns NULL.
- */
- PyArrayObject* obj_to_array_allow_conversion(PyObject* input, int typecode,
- int* is_new_object)
- {
- PyArrayObject* ary = NULL;
- PyObject* py_obj;
- if (is_array(input) && (typecode == NPY_NOTYPE ||
- PyArray_EquivTypenums(array_type(input),typecode)))
- {
- ary = (PyArrayObject*) input;
- *is_new_object = 0;
- }
- else
- {
- py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_DEFAULT);
- /* If NULL, PyArray_FromObject will have set python error value.*/
- ary = (PyArrayObject*) py_obj;
- *is_new_object = 1;
- }
- return ary;
- }
-
- /* Given a PyArrayObject, check to see if it is contiguous. If so,
- * return the input pointer and flag it as not a new object. If it is
- * not contiguous, create a new PyArrayObject using the original data,
- * flag it as a new object and return the pointer.
- */
- PyArrayObject* make_contiguous(PyArrayObject* ary, int* is_new_object,
- int min_dims, int max_dims)
- {
- PyArrayObject* result;
- if (array_is_contiguous(ary))
- {
- result = ary;
- *is_new_object = 0;
- }
- else
- {
- result = (PyArrayObject*) PyArray_ContiguousFromObject((PyObject*)ary,
- array_type(ary),
- min_dims,
- max_dims);
- *is_new_object = 1;
- }
- return result;
- }
-
- /* Given a PyArrayObject, check to see if it is Fortran-contiguous.
- * If so, return the input pointer, but do not flag it as not a new
- * object. If it is not Fortran-contiguous, create a new
- * PyArrayObject using the original data, flag it as a new object
- * and return the pointer.
- */
- PyArrayObject* make_fortran(PyArrayObject* ary, int* is_new_object,
- int min_dims, int max_dims)
- {
- PyArrayObject* result;
- if (array_is_fortran(ary))
- {
- result = ary;
- *is_new_object = 0;
- }
- else
- {
- Py_INCREF(ary->descr);
- result = (PyArrayObject*) PyArray_FromArray(ary, ary->descr, NPY_FORTRAN);
- *is_new_object = 1;
- }
- return result;
- }
-
- /* Convert a given PyObject to a contiguous PyArrayObject of the
- * specified type. If the input object is not a contiguous
- * PyArrayObject, a new one will be created and the new object flag
- * will be set.
- */
- PyArrayObject* obj_to_array_contiguous_allow_conversion(PyObject* input,
- int typecode,
- int* is_new_object)
- {
- int is_new1 = 0;
- int is_new2 = 0;
- PyArrayObject* ary2;
- PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
- &is_new1);
- if (ary1)
- {
- ary2 = make_contiguous(ary1, &is_new2, 0, 0);
- if ( is_new1 && is_new2)
- {
- Py_DECREF(ary1);
- }
- ary1 = ary2;
- }
- *is_new_object = is_new1 || is_new2;
- return ary1;
- }
-
- /* Convert a given PyObject to a Fortran-ordered PyArrayObject of the
- * specified type. If the input object is not a Fortran-ordered
- * PyArrayObject, a new one will be created and the new object flag
- * will be set.
- */
- PyArrayObject* obj_to_array_fortran_allow_conversion(PyObject* input,
- int typecode,
- int* is_new_object)
- {
- int is_new1 = 0;
- int is_new2 = 0;
- PyArrayObject* ary2;
- PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
- &is_new1);
- if (ary1)
- {
- ary2 = make_fortran(ary1, &is_new2, 0, 0);
- if (is_new1 && is_new2)
- {
- Py_DECREF(ary1);
- }
- ary1 = ary2;
- }
- *is_new_object = is_new1 || is_new2;
- return ary1;
- }
-
-} /* end fragment */
-
-
-/**********************************************************************/
-
-%fragment("NumPy_Array_Requirements", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros")
-{
- /* Test whether a python object is contiguous. If array is
- * contiguous, return 1. Otherwise, set the python error string and
- * return 0.
- */
- int require_contiguous(PyArrayObject* ary)
- {
- int contiguous = 1;
- if (!array_is_contiguous(ary))
- {
- PyErr_SetString(PyExc_TypeError,
- "Array must be contiguous. A non-contiguous array was given");
- contiguous = 0;
- }
- return contiguous;
- }
-
- /* Require that a numpy array is not byte-swapped. If the array is
- * not byte-swapped, return 1. Otherwise, set the python error string
- * and return 0.
- */
- int require_native(PyArrayObject* ary)
- {
- int native = 1;
- if (!array_is_native(ary))
- {
- PyErr_SetString(PyExc_TypeError,
- "Array must have native byteorder. "
- "A byte-swapped array was given");
- native = 0;
- }
- return native;
- }
-
- /* Require the given PyArrayObject to have a specified number of
- * dimensions. If the array has the specified number of dimensions,
- * return 1. Otherwise, set the python error string and return 0.
- */
- int require_dimensions(PyArrayObject* ary, int exact_dimensions)
- {
- int success = 1;
- if (array_numdims(ary) != exact_dimensions)
- {
- PyErr_Format(PyExc_TypeError,
- "Array must have %d dimensions. Given array has %d dimensions",
- exact_dimensions, array_numdims(ary));
- success = 0;
- }
- return success;
- }
-
- /* Require the given PyArrayObject to have one of a list of specified
- * number of dimensions. If the array has one of the specified number
- * of dimensions, return 1. Otherwise, set the python error string
- * and return 0.
- */
- int require_dimensions_n(PyArrayObject* ary, int* exact_dimensions, int n)
- {
- int success = 0;
- int i;
- char dims_str[255] = "";
- char s[255];
- for (i = 0; i < n && !success; i++)
- {
- if (array_numdims(ary) == exact_dimensions[i])
- {
- success = 1;
- }
- }
- if (!success)
- {
- for (i = 0; i < n-1; i++)
- {
- sprintf(s, "%d, ", exact_dimensions[i]);
- strcat(dims_str,s);
- }
- sprintf(s, " or %d", exact_dimensions[n-1]);
- strcat(dims_str,s);
- PyErr_Format(PyExc_TypeError,
- "Array must have %s dimensions. Given array has %d dimensions",
- dims_str, array_numdims(ary));
- }
- return success;
- }
-
- /* Require the given PyArrayObject to have a specified shape. If the
- * array has the specified shape, return 1. Otherwise, set the python
- * error string and return 0.
- */
- int require_size(PyArrayObject* ary, npy_intp* size, int n)
- {
- int i;
- int success = 1;
- int len;
- char desired_dims[255] = "[";
- char s[255];
- char actual_dims[255] = "[";
- for(i=0; i < n;i++)
- {
- if (size[i] != -1 && size[i] != array_size(ary,i))
- {
- success = 0;
- }
- }
- if (!success)
- {
- for (i = 0; i < n; i++)
- {
- if (size[i] == -1)
- {
- sprintf(s, "*,");
- }
- else
- {
- sprintf(s, "%ld,", (long int)size[i]);
- }
- strcat(desired_dims,s);
- }
- len = strlen(desired_dims);
- desired_dims[len-1] = ']';
- for (i = 0; i < n; i++)
- {
- sprintf(s, "%ld,", (long int)array_size(ary,i));
- strcat(actual_dims,s);
- }
- len = strlen(actual_dims);
- actual_dims[len-1] = ']';
- PyErr_Format(PyExc_TypeError,
- "Array must have shape of %s. Given array has shape of %s",
- desired_dims, actual_dims);
- }
- return success;
- }
-
- /* Require the given PyArrayObject to to be FORTRAN ordered. If the
- * the PyArrayObject is already FORTRAN ordered, do nothing. Else,
- * set the FORTRAN ordering flag and recompute the strides.
- */
- int require_fortran(PyArrayObject* ary)
- {
- int success = 1;
- int nd = array_numdims(ary);
- int i;
- if (array_is_fortran(ary)) return success;
- /* Set the FORTRAN ordered flag */
- ary->flags = NPY_FARRAY;
- /* Recompute the strides */
- ary->strides[0] = ary->strides[nd-1];
- for (i=1; i < nd; ++i)
- ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);
- return success;
- }
-}
-
-/* Combine all NumPy fragments into one for convenience */
-%fragment("NumPy_Fragments", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros",
- fragment="NumPy_Utilities",
- fragment="NumPy_Object_to_Array",
- fragment="NumPy_Array_Requirements") { }
-
-/* End John Hunter translation (with modifications by Bill Spotz)
- */
-
-/* %numpy_typemaps() macro
- *
- * This macro defines a family of 41 typemaps that allow C arguments
- * of the form
- *
- * (DATA_TYPE IN_ARRAY1[ANY])
- * (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- *
- * (DATA_TYPE IN_ARRAY2[ANY][ANY])
- * (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- * (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- *
- * (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- * (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
- * (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
- *
- * (DATA_TYPE INPLACE_ARRAY1[ANY])
- * (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- *
- * (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- * (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- * (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- *
- * (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- * (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
- * (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
- *
- * (DATA_TYPE ARGOUT_ARRAY1[ANY])
- * (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- *
- * (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- *
- * (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- * (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- * (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- * (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- *
- * where "DATA_TYPE" is any type supported by the NumPy module, and
- * "DIM_TYPE" is any int-like type suitable for specifying dimensions.
- * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
- * that the "FARRAY" typemaps expect FORTRAN ordering of
- * multidimensional arrays. In python, the dimensions will not need
- * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
- * typemaps). The IN_ARRAYs can be a numpy array or any sequence that
- * can be converted to a numpy array of the specified type. The
- * INPLACE_ARRAYs must be numpy arrays of the appropriate type. The
- * ARGOUT_ARRAYs will be returned as new numpy arrays of the
- * appropriate type.
- *
- * These typemaps can be applied to existing functions using the
- * %apply directive. For example:
- *
- * %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)};
- * double prod(double* series, int length);
- *
- * %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2)
- * {(int rows, int cols, double* matrix )};
- * void floor(int rows, int cols, double* matrix, double f);
- *
- * %apply (double IN_ARRAY3[ANY][ANY][ANY])
- * {(double tensor[2][2][2] )};
- * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- * {(double low[2][2][2] )};
- * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- * {(double upp[2][2][2] )};
- * void luSplit(double tensor[2][2][2],
- * double low[2][2][2],
- * double upp[2][2][2] );
- *
- * or directly with
- *
- * double prod(double* IN_ARRAY1, int DIM1);
- *
- * void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f);
- *
- * void luSplit(double IN_ARRAY3[ANY][ANY][ANY],
- * double ARGOUT_ARRAY3[ANY][ANY][ANY],
- * double ARGOUT_ARRAY3[ANY][ANY][ANY]);
- */
-
-%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
-
-/************************/
-/* Input Array Typemaps */
-/************************/
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY1[ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY1[ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = { $1_dim0 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY1[ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = { -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = {-1};
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { $1_dim0, $1_dim1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* IN_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3) | !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* IN_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/***************************/
-/* In-Place Array Typemaps */
-/***************************/
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY1[ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY1[ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[1] = { $1_dim0 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_size(array, size, 1) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- (PyArrayObject* array=NULL, int i=1)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = 1;
- for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- (PyArrayObject* array=NULL, int i=0)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = 1;
- for (i=0; i < array_numdims(array); ++i) $1 *= array_size(array,i);
- $2 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[2] = { $1_dim0, $1_dim1 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_size(array, size, 2) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
- !require_native(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array)
- || !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
- !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_size(array, size, 3) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
- !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* INPLACE_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
- !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* INPLACE_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array)
- || !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-
-/*************************/
-/* Argout Array Typemaps */
-/*************************/
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY1[ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY1[ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[1] = { $1_dim0 };
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY1[ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- */
-%typemap(in,numinputs=1,
- fragment="NumPy_Fragments")
- (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- (PyObject * array = NULL)
-{
- npy_intp dims[1];
- if (!PyInt_Check($input))
- {
- char* typestring = pytype_string($input);
- PyErr_Format(PyExc_TypeError,
- "Int dimension expected. '%s' given.",
- typestring);
- SWIG_fail;
- }
- $2 = (DIM_TYPE) PyInt_AsLong($input);
- dims[0] = (npy_intp) $2;
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- */
-%typemap(in,numinputs=1,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- (PyObject * array = NULL)
-{
- npy_intp dims[1];
- if (!PyInt_Check($input))
- {
- char* typestring = pytype_string($input);
- PyErr_Format(PyExc_TypeError,
- "Int dimension expected. '%s' given.",
- typestring);
- SWIG_fail;
- }
- $1 = (DIM_TYPE) PyInt_AsLong($input);
- dims[0] = (npy_intp) $1;
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
- (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[2] = { $1_dim0, $1_dim1 };
- array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/*****************************/
-/* Argoutview Array Typemaps */
-/*****************************/
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1 )
- (DATA_TYPE* data_temp , DIM_TYPE dim_temp)
-{
- $1 = &data_temp;
- $2 = &dim_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
-{
- npy_intp dims[1] = { *$2 };
- PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DATA_TYPE** ARGOUTVIEW_ARRAY1)
- (DIM_TYPE dim_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim_temp;
- $2 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-{
- npy_intp dims[1] = { *$1 };
- PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
- (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
- npy_intp dims[2] = { *$2, *$3 };
- PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_ARRAY2)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-{
- npy_intp dims[2] = { *$1, *$2 };
- PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
- (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
- npy_intp dims[2] = { *$2, *$3 };
- PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || !require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_FARRAY2)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
-{
- npy_intp dims[2] = { *$1, *$2 };
- PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || !require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
- DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
- $4 = &dim3_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
- npy_intp dims[3] = { *$2, *$3, *$4 };
- PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
- DATA_TYPE** ARGOUTVIEW_ARRAY3)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &dim3_temp;
- $4 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-{
- npy_intp dims[3] = { *$1, *$2, *$3 };
- PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
- DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
- $4 = &dim3_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
- npy_intp dims[3] = { *$2, *$3, *$4 };
- PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
- DATA_TYPE** ARGOUTVIEW_FARRAY3)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &dim3_temp;
- $4 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
-{
- npy_intp dims[3] = { *$1, *$2, *$3 };
- PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-%enddef /* %numpy_typemaps() macro */
-/* *************************************************************** */
-
-/* Concrete instances of the %numpy_typemaps() macro: Each invocation
- * below applies all of the typemaps above to the specified data type.
- */
-%numpy_typemaps(signed char , NPY_BYTE , int)
-%numpy_typemaps(unsigned char , NPY_UBYTE , int)
-%numpy_typemaps(short , NPY_SHORT , int)
-%numpy_typemaps(unsigned short , NPY_USHORT , int)
-%numpy_typemaps(int , NPY_INT , int)
-%numpy_typemaps(unsigned int , NPY_UINT , int)
-%numpy_typemaps(long , NPY_LONG , int)
-%numpy_typemaps(unsigned long , NPY_ULONG , int)
-%numpy_typemaps(long long , NPY_LONGLONG , int)
-%numpy_typemaps(unsigned long long, NPY_ULONGLONG, int)
-%numpy_typemaps(float , NPY_FLOAT , int)
-%numpy_typemaps(double , NPY_DOUBLE , int)
-
-/* ***************************************************************
- * The follow macro expansion does not work, because C++ bool is 4
- * bytes and NPY_BOOL is 1 byte
- *
- * %numpy_typemaps(bool, NPY_BOOL, int)
- */
-
-/* ***************************************************************
- * On my Mac, I get the following warning for this macro expansion:
- * 'swig/python detected a memory leak of type 'long double *', no destructor found.'
- *
- * %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
- */
-
-/* ***************************************************************
- * Swig complains about a syntax error for the following macro
- * expansions:
- *
- * %numpy_typemaps(complex float, NPY_CFLOAT , int)
- *
- * %numpy_typemaps(complex double, NPY_CDOUBLE, int)
- *
- * %numpy_typemaps(complex long double, NPY_CLONGDOUBLE, int)
- */
-
-#endif /* SWIGPYTHON */
--- /dev/null
+/* -*- C -*- (not really, but good for syntax highlighting) */
+#ifdef SWIGPYTHON
+
+%{
+#ifndef SWIG_FILE_WITH_INIT
+# define NO_IMPORT_ARRAY
+#endif
+#include "stdio.h"
+#include <numpy/arrayobject.h>
+%}
+
+/**********************************************************************/
+
+%fragment("NumPy_Backward_Compatibility", "header")
+{
+/* Support older NumPy data type names
+*/
+%#if NDARRAY_VERSION < 0x01000000
+%#define NPY_BOOL PyArray_BOOL
+%#define NPY_BYTE PyArray_BYTE
+%#define NPY_UBYTE PyArray_UBYTE
+%#define NPY_SHORT PyArray_SHORT
+%#define NPY_USHORT PyArray_USHORT
+%#define NPY_INT PyArray_INT
+%#define NPY_UINT PyArray_UINT
+%#define NPY_LONG PyArray_LONG
+%#define NPY_ULONG PyArray_ULONG
+%#define NPY_LONGLONG PyArray_LONGLONG
+%#define NPY_ULONGLONG PyArray_ULONGLONG
+%#define NPY_FLOAT PyArray_FLOAT
+%#define NPY_DOUBLE PyArray_DOUBLE
+%#define NPY_LONGDOUBLE PyArray_LONGDOUBLE
+%#define NPY_CFLOAT PyArray_CFLOAT
+%#define NPY_CDOUBLE PyArray_CDOUBLE
+%#define NPY_CLONGDOUBLE PyArray_CLONGDOUBLE
+%#define NPY_OBJECT PyArray_OBJECT
+%#define NPY_STRING PyArray_STRING
+%#define NPY_UNICODE PyArray_UNICODE
+%#define NPY_VOID PyArray_VOID
+%#define NPY_NTYPES PyArray_NTYPES
+%#define NPY_NOTYPE PyArray_NOTYPE
+%#define NPY_CHAR PyArray_CHAR
+%#define NPY_USERDEF PyArray_USERDEF
+%#define npy_intp intp
+
+%#define NPY_MAX_BYTE MAX_BYTE
+%#define NPY_MIN_BYTE MIN_BYTE
+%#define NPY_MAX_UBYTE MAX_UBYTE
+%#define NPY_MAX_SHORT MAX_SHORT
+%#define NPY_MIN_SHORT MIN_SHORT
+%#define NPY_MAX_USHORT MAX_USHORT
+%#define NPY_MAX_INT MAX_INT
+%#define NPY_MIN_INT MIN_INT
+%#define NPY_MAX_UINT MAX_UINT
+%#define NPY_MAX_LONG MAX_LONG
+%#define NPY_MIN_LONG MIN_LONG
+%#define NPY_MAX_ULONG MAX_ULONG
+%#define NPY_MAX_LONGLONG MAX_LONGLONG
+%#define NPY_MIN_LONGLONG MIN_LONGLONG
+%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
+%#define NPY_MAX_INTP MAX_INTP
+%#define NPY_MIN_INTP MIN_INTP
+
+%#define NPY_FARRAY FARRAY
+%#define NPY_F_CONTIGUOUS F_CONTIGUOUS
+%#endif
+}
+
+/**********************************************************************/
+
+/* The following code originally appeared in
+ * enthought/kiva/agg/src/numeric.i written by Eric Jones. It was
+ * translated from C++ to C by John Hunter. Bill Spotz has modified
+ * it to fix some minor bugs, upgrade from Numeric to numpy (all
+ * versions), add some comments and functionality, and convert from
+ * direct code insertion to SWIG fragments.
+ */
+
+%fragment("NumPy_Macros", "header")
+{
+/* Macros to extract array attributes.
+ */
+%#define is_array(a) ((a) && PyArray_Check((PyArrayObject *)a))
+%#define array_type(a) (int)(PyArray_TYPE(a))
+%#define array_numdims(a) (((PyArrayObject *)a)->nd)
+%#define array_dimensions(a) (((PyArrayObject *)a)->dimensions)
+%#define array_size(a,i) (((PyArrayObject *)a)->dimensions[i])
+%#define array_data(a) (((PyArrayObject *)a)->data)
+%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS(a))
+%#define array_is_native(a) (PyArray_ISNOTSWAPPED(a))
+%#define array_is_fortran(a) (PyArray_ISFORTRAN(a))
+}
+
+/**********************************************************************/
+
+%fragment("NumPy_Utilities", "header")
+{
+ /* Given a PyObject, return a string describing its type.
+ */
+ char* pytype_string(PyObject* py_obj) {
+ if (py_obj == NULL ) return "C NULL value";
+ if (py_obj == Py_None ) return "Python None" ;
+ if (PyCallable_Check(py_obj)) return "callable" ;
+ if (PyString_Check( py_obj)) return "string" ;
+ if (PyInt_Check( py_obj)) return "int" ;
+ if (PyFloat_Check( py_obj)) return "float" ;
+ if (PyDict_Check( py_obj)) return "dict" ;
+ if (PyList_Check( py_obj)) return "list" ;
+ if (PyTuple_Check( py_obj)) return "tuple" ;
+ if (PyFile_Check( py_obj)) return "file" ;
+ if (PyModule_Check( py_obj)) return "module" ;
+ if (PyInstance_Check(py_obj)) return "instance" ;
+
+ return "unknow type";
+ }
+
+ /* Given a NumPy typecode, return a string describing the type.
+ */
+ char* typecode_string(int typecode) {
+ static char* type_names[25] = {"bool", "byte", "unsigned byte",
+ "short", "unsigned short", "int",
+ "unsigned int", "long", "unsigned long",
+ "long long", "unsigned long long",
+ "float", "double", "long double",
+ "complex float", "complex double",
+ "complex long double", "object",
+ "string", "unicode", "void", "ntypes",
+ "notype", "char", "unknown"};
+ return typecode < 24 ? type_names[typecode] : type_names[24];
+ }
+
+ /* Make sure input has correct numpy type. Allow character and byte
+ * to match. Also allow int and long to match. This is deprecated.
+ * You should use PyArray_EquivTypenums() instead.
+ */
+ int type_match(int actual_type, int desired_type) {
+ return PyArray_EquivTypenums(actual_type, desired_type);
+ }
+}
+
+/**********************************************************************/
+
+%fragment("NumPy_Object_to_Array", "header",
+ fragment="NumPy_Backward_Compatibility",
+ fragment="NumPy_Macros",
+ fragment="NumPy_Utilities")
+{
+ /* Given a PyObject pointer, cast it to a PyArrayObject pointer if
+ * legal. If not, set the python error string appropriately and
+ * return NULL.
+ */
+ PyArrayObject* obj_to_array_no_conversion(PyObject* input, int typecode)
+ {
+ PyArrayObject* ary = NULL;
+ if (is_array(input) && (typecode == NPY_NOTYPE ||
+ PyArray_EquivTypenums(array_type(input), typecode)))
+ {
+ ary = (PyArrayObject*) input;
+ }
+ else if is_array(input)
+ {
+ char* desired_type = typecode_string(typecode);
+ char* actual_type = typecode_string(array_type(input));
+ PyErr_Format(PyExc_TypeError,
+ "Array of type '%s' required. Array of type '%s' given",
+ desired_type, actual_type);
+ ary = NULL;
+ }
+ else
+ {
+ char * desired_type = typecode_string(typecode);
+ char * actual_type = pytype_string(input);
+ PyErr_Format(PyExc_TypeError,
+ "Array of type '%s' required. A '%s' was given",
+ desired_type, actual_type);
+ ary = NULL;
+ }
+ return ary;
+ }
+
+ /* Convert the given PyObject to a NumPy array with the given
+ * typecode. On success, return a valid PyArrayObject* with the
+ * correct type. On failure, the python error string will be set and
+ * the routine returns NULL.
+ */
+ PyArrayObject* obj_to_array_allow_conversion(PyObject* input, int typecode,
+ int* is_new_object)
+ {
+ PyArrayObject* ary = NULL;
+ PyObject* py_obj;
+ if (is_array(input) && (typecode == NPY_NOTYPE ||
+ PyArray_EquivTypenums(array_type(input),typecode)))
+ {
+ ary = (PyArrayObject*) input;
+ *is_new_object = 0;
+ }
+ else
+ {
+ py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_DEFAULT);
+ /* If NULL, PyArray_FromObject will have set python error value.*/
+ ary = (PyArrayObject*) py_obj;
+ *is_new_object = 1;
+ }
+ return ary;
+ }
+
+ /* Given a PyArrayObject, check to see if it is contiguous. If so,
+ * return the input pointer and flag it as not a new object. If it is
+ * not contiguous, create a new PyArrayObject using the original data,
+ * flag it as a new object and return the pointer.
+ */
+ PyArrayObject* make_contiguous(PyArrayObject* ary, int* is_new_object,
+ int min_dims, int max_dims)
+ {
+ PyArrayObject* result;
+ if (array_is_contiguous(ary))
+ {
+ result = ary;
+ *is_new_object = 0;
+ }
+ else
+ {
+ result = (PyArrayObject*) PyArray_ContiguousFromObject((PyObject*)ary,
+ array_type(ary),
+ min_dims,
+ max_dims);
+ *is_new_object = 1;
+ }
+ return result;
+ }
+
+ /* Given a PyArrayObject, check to see if it is Fortran-contiguous.
+ * If so, return the input pointer, but do not flag it as not a new
+ * object. If it is not Fortran-contiguous, create a new
+ * PyArrayObject using the original data, flag it as a new object
+ * and return the pointer.
+ */
+ PyArrayObject* make_fortran(PyArrayObject* ary, int* is_new_object,
+ int min_dims, int max_dims)
+ {
+ PyArrayObject* result;
+ if (array_is_fortran(ary))
+ {
+ result = ary;
+ *is_new_object = 0;
+ }
+ else
+ {
+ Py_INCREF(ary->descr);
+ result = (PyArrayObject*) PyArray_FromArray(ary, ary->descr, NPY_FORTRAN);
+ *is_new_object = 1;
+ }
+ return result;
+ }
+
+ /* Convert a given PyObject to a contiguous PyArrayObject of the
+ * specified type. If the input object is not a contiguous
+ * PyArrayObject, a new one will be created and the new object flag
+ * will be set.
+ */
+ PyArrayObject* obj_to_array_contiguous_allow_conversion(PyObject* input,
+ int typecode,
+ int* is_new_object)
+ {
+ int is_new1 = 0;
+ int is_new2 = 0;
+ PyArrayObject* ary2;
+ PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
+ &is_new1);
+ if (ary1)
+ {
+ ary2 = make_contiguous(ary1, &is_new2, 0, 0);
+ if ( is_new1 && is_new2)
+ {
+ Py_DECREF(ary1);
+ }
+ ary1 = ary2;
+ }
+ *is_new_object = is_new1 || is_new2;
+ return ary1;
+ }
+
+ /* Convert a given PyObject to a Fortran-ordered PyArrayObject of the
+ * specified type. If the input object is not a Fortran-ordered
+ * PyArrayObject, a new one will be created and the new object flag
+ * will be set.
+ */
+ PyArrayObject* obj_to_array_fortran_allow_conversion(PyObject* input,
+ int typecode,
+ int* is_new_object)
+ {
+ int is_new1 = 0;
+ int is_new2 = 0;
+ PyArrayObject* ary2;
+ PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
+ &is_new1);
+ if (ary1)
+ {
+ ary2 = make_fortran(ary1, &is_new2, 0, 0);
+ if (is_new1 && is_new2)
+ {
+ Py_DECREF(ary1);
+ }
+ ary1 = ary2;
+ }
+ *is_new_object = is_new1 || is_new2;
+ return ary1;
+ }
+
+} /* end fragment */
+
+
+/**********************************************************************/
+
+%fragment("NumPy_Array_Requirements", "header",
+ fragment="NumPy_Backward_Compatibility",
+ fragment="NumPy_Macros")
+{
+ /* Test whether a python object is contiguous. If array is
+ * contiguous, return 1. Otherwise, set the python error string and
+ * return 0.
+ */
+ int require_contiguous(PyArrayObject* ary)
+ {
+ int contiguous = 1;
+ if (!array_is_contiguous(ary))
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "Array must be contiguous. A non-contiguous array was given");
+ contiguous = 0;
+ }
+ return contiguous;
+ }
+
+ /* Require that a numpy array is not byte-swapped. If the array is
+ * not byte-swapped, return 1. Otherwise, set the python error string
+ * and return 0.
+ */
+ int require_native(PyArrayObject* ary)
+ {
+ int native = 1;
+ if (!array_is_native(ary))
+ {
+ PyErr_SetString(PyExc_TypeError,
+ "Array must have native byteorder. "
+ "A byte-swapped array was given");
+ native = 0;
+ }
+ return native;
+ }
+
+ /* Require the given PyArrayObject to have a specified number of
+ * dimensions. If the array has the specified number of dimensions,
+ * return 1. Otherwise, set the python error string and return 0.
+ */
+ int require_dimensions(PyArrayObject* ary, int exact_dimensions)
+ {
+ int success = 1;
+ if (array_numdims(ary) != exact_dimensions)
+ {
+ PyErr_Format(PyExc_TypeError,
+ "Array must have %d dimensions. Given array has %d dimensions",
+ exact_dimensions, array_numdims(ary));
+ success = 0;
+ }
+ return success;
+ }
+
+ /* Require the given PyArrayObject to have one of a list of specified
+ * number of dimensions. If the array has one of the specified number
+ * of dimensions, return 1. Otherwise, set the python error string
+ * and return 0.
+ */
+ int require_dimensions_n(PyArrayObject* ary, int* exact_dimensions, int n)
+ {
+ int success = 0;
+ int i;
+ char dims_str[255] = "";
+ char s[255];
+ for (i = 0; i < n && !success; i++)
+ {
+ if (array_numdims(ary) == exact_dimensions[i])
+ {
+ success = 1;
+ }
+ }
+ if (!success)
+ {
+ for (i = 0; i < n-1; i++)
+ {
+ sprintf(s, "%d, ", exact_dimensions[i]);
+ strcat(dims_str,s);
+ }
+ sprintf(s, " or %d", exact_dimensions[n-1]);
+ strcat(dims_str,s);
+ PyErr_Format(PyExc_TypeError,
+ "Array must have %s dimensions. Given array has %d dimensions",
+ dims_str, array_numdims(ary));
+ }
+ return success;
+ }
+
+ /* Require the given PyArrayObject to have a specified shape. If the
+ * array has the specified shape, return 1. Otherwise, set the python
+ * error string and return 0.
+ */
+ int require_size(PyArrayObject* ary, npy_intp* size, int n)
+ {
+ int i;
+ int success = 1;
+ int len;
+ char desired_dims[255] = "[";
+ char s[255];
+ char actual_dims[255] = "[";
+ for(i=0; i < n;i++)
+ {
+ if (size[i] != -1 && size[i] != array_size(ary,i))
+ {
+ success = 0;
+ }
+ }
+ if (!success)
+ {
+ for (i = 0; i < n; i++)
+ {
+ if (size[i] == -1)
+ {
+ sprintf(s, "*,");
+ }
+ else
+ {
+ sprintf(s, "%ld,", (long int)size[i]);
+ }
+ strcat(desired_dims,s);
+ }
+ len = strlen(desired_dims);
+ desired_dims[len-1] = ']';
+ for (i = 0; i < n; i++)
+ {
+ sprintf(s, "%ld,", (long int)array_size(ary,i));
+ strcat(actual_dims,s);
+ }
+ len = strlen(actual_dims);
+ actual_dims[len-1] = ']';
+ PyErr_Format(PyExc_TypeError,
+ "Array must have shape of %s. Given array has shape of %s",
+ desired_dims, actual_dims);
+ }
+ return success;
+ }
+
+ /* Require the given PyArrayObject to to be FORTRAN ordered. If the
+ * the PyArrayObject is already FORTRAN ordered, do nothing. Else,
+ * set the FORTRAN ordering flag and recompute the strides.
+ */
+ int require_fortran(PyArrayObject* ary)
+ {
+ int success = 1;
+ int nd = array_numdims(ary);
+ int i;
+ if (array_is_fortran(ary)) return success;
+ /* Set the FORTRAN ordered flag */
+ ary->flags = NPY_FARRAY;
+ /* Recompute the strides */
+ ary->strides[0] = ary->strides[nd-1];
+ for (i=1; i < nd; ++i)
+ ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);
+ return success;
+ }
+}
+
+/* Combine all NumPy fragments into one for convenience */
+%fragment("NumPy_Fragments", "header",
+ fragment="NumPy_Backward_Compatibility",
+ fragment="NumPy_Macros",
+ fragment="NumPy_Utilities",
+ fragment="NumPy_Object_to_Array",
+ fragment="NumPy_Array_Requirements") { }
+
+/* End John Hunter translation (with modifications by Bill Spotz)
+ */
+
+/* %numpy_typemaps() macro
+ *
+ * This macro defines a family of 41 typemaps that allow C arguments
+ * of the form
+ *
+ * (DATA_TYPE IN_ARRAY1[ANY])
+ * (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
+ * (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
+ *
+ * (DATA_TYPE IN_ARRAY2[ANY][ANY])
+ * (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+ * (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+ *
+ * (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
+ * (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
+ * (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+ *
+ * (DATA_TYPE INPLACE_ARRAY1[ANY])
+ * (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
+ * (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
+ *
+ * (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
+ * (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
+ * (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+ *
+ * (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
+ * (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
+ * (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
+ *
+ * (DATA_TYPE ARGOUT_ARRAY1[ANY])
+ * (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
+ * (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
+ *
+ * (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
+ *
+ * (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
+ *
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+ * (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ *
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ * (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ *
+ * (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ * (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ *
+ * where "DATA_TYPE" is any type supported by the NumPy module, and
+ * "DIM_TYPE" is any int-like type suitable for specifying dimensions.
+ * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
+ * that the "FARRAY" typemaps expect FORTRAN ordering of
+ * multidimensional arrays. In python, the dimensions will not need
+ * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
+ * typemaps). The IN_ARRAYs can be a numpy array or any sequence that
+ * can be converted to a numpy array of the specified type. The
+ * INPLACE_ARRAYs must be numpy arrays of the appropriate type. The
+ * ARGOUT_ARRAYs will be returned as new numpy arrays of the
+ * appropriate type.
+ *
+ * These typemaps can be applied to existing functions using the
+ * %apply directive. For example:
+ *
+ * %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)};
+ * double prod(double* series, int length);
+ *
+ * %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2)
+ * {(int rows, int cols, double* matrix )};
+ * void floor(int rows, int cols, double* matrix, double f);
+ *
+ * %apply (double IN_ARRAY3[ANY][ANY][ANY])
+ * {(double tensor[2][2][2] )};
+ * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
+ * {(double low[2][2][2] )};
+ * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
+ * {(double upp[2][2][2] )};
+ * void luSplit(double tensor[2][2][2],
+ * double low[2][2][2],
+ * double upp[2][2][2] );
+ *
+ * or directly with
+ *
+ * double prod(double* IN_ARRAY1, int DIM1);
+ *
+ * void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f);
+ *
+ * void luSplit(double IN_ARRAY3[ANY][ANY][ANY],
+ * double ARGOUT_ARRAY3[ANY][ANY][ANY],
+ * double ARGOUT_ARRAY3[ANY][ANY][ANY]);
+ */
+
+%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
+
+/************************/
+/* Input Array Typemaps */
+/************************/
+
+/* Typemap suite for (DATA_TYPE IN_ARRAY1[ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE IN_ARRAY1[ANY])
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE IN_ARRAY1[ANY])
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[1] = { $1_dim0 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 1) ||
+ !require_size(array, size, 1)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(freearg)
+ (DATA_TYPE IN_ARRAY1[ANY])
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[1] = { -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 1) ||
+ !require_size(array, size, 1)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[1] = {-1};
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 1) ||
+ !require_size(array, size, 1)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE IN_ARRAY2[ANY][ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE IN_ARRAY2[ANY][ANY])
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE IN_ARRAY2[ANY][ANY])
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { $1_dim0, $1_dim1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(freearg)
+ (DATA_TYPE IN_ARRAY2[ANY][ANY])
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[2] = { -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 2) ||
+ !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(freearg)
+ (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* IN_ARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3) | !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+%typemap(freearg)
+ (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* IN_FARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+{
+ $1 = is_array($input) || PySequence_Check($input);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+ (PyArrayObject* array=NULL, int is_new_object=0)
+{
+ npy_intp size[3] = { -1, -1, -1 };
+ array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
+ &is_new_object);
+ if (!array || !require_dimensions(array, 3) ||
+ !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+%typemap(freearg)
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
+{
+ if (is_new_object$argnum && array$argnum)
+ { Py_DECREF(array$argnum); }
+}
+
+/***************************/
+/* In-Place Array Typemaps */
+/***************************/
+
+/* Typemap suite for (DATA_TYPE INPLACE_ARRAY1[ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE INPLACE_ARRAY1[ANY])
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE INPLACE_ARRAY1[ANY])
+ (PyArrayObject* array=NULL)
+{
+ npy_intp size[1] = { $1_dim0 };
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,1) || !require_size(array, size, 1) ||
+ !require_contiguous(array) || !require_native(array)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
+ (PyArrayObject* array=NULL, int i=1)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,1) || !require_contiguous(array)
+ || !require_native(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = 1;
+ for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
+ (PyArrayObject* array=NULL, int i=0)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,1) || !require_contiguous(array)
+ || !require_native(array)) SWIG_fail;
+ $1 = 1;
+ for (i=0; i < array_numdims(array); ++i) $1 *= array_size(array,i);
+ $2 = (DATA_TYPE*) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
+ (PyArrayObject* array=NULL)
+{
+ npy_intp size[2] = { $1_dim0, $1_dim1 };
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_size(array, size, 2) ||
+ !require_contiguous(array) || !require_native(array)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array)
+ || !require_native(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
+ !require_native(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array)
+ || !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
+ !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DATA_TYPE*) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
+ (PyArrayObject* array=NULL)
+{
+ npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_size(array, size, 3) ||
+ !require_contiguous(array) || !require_native(array)) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
+ !require_native(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* INPLACE_ARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array)
+ || !require_native(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+
+/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
+ * DIM_TYPE DIM3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
+ !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+ $2 = (DIM_TYPE) array_size(array,0);
+ $3 = (DIM_TYPE) array_size(array,1);
+ $4 = (DIM_TYPE) array_size(array,2);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
+ * DATA_TYPE* INPLACE_FARRAY3)
+ */
+%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
+ fragment="NumPy_Macros")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
+{
+ $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
+ DATA_TYPECODE);
+}
+%typemap(in,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
+ (PyArrayObject* array=NULL)
+{
+ array = obj_to_array_no_conversion($input, DATA_TYPECODE);
+ if (!array || !require_dimensions(array,3) || !require_contiguous(array)
+ || !require_native(array) || !require_fortran(array)) SWIG_fail;
+ $1 = (DIM_TYPE) array_size(array,0);
+ $2 = (DIM_TYPE) array_size(array,1);
+ $3 = (DIM_TYPE) array_size(array,2);
+ $4 = (DATA_TYPE*) array_data(array);
+}
+
+/*************************/
+/* Argout Array Typemaps */
+/*************************/
+
+/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY1[ANY])
+ */
+%typemap(in,numinputs=0,
+ fragment="NumPy_Backward_Compatibility,NumPy_Macros")
+ (DATA_TYPE ARGOUT_ARRAY1[ANY])
+ (PyObject * array = NULL)
+{
+ npy_intp dims[1] = { $1_dim0 };
+ array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(argout)
+ (DATA_TYPE ARGOUT_ARRAY1[ANY])
+{
+ $result = SWIG_Python_AppendOutput($result,array$argnum);
+}
+
+/* Typemap suite for (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
+ */
+%typemap(in,numinputs=1,
+ fragment="NumPy_Fragments")
+ (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
+ (PyObject * array = NULL)
+{
+ npy_intp dims[1];
+ if (!PyInt_Check($input))
+ {
+ char* typestring = pytype_string($input);
+ PyErr_Format(PyExc_TypeError,
+ "Int dimension expected. '%s' given.",
+ typestring);
+ SWIG_fail;
+ }
+ $2 = (DIM_TYPE) PyInt_AsLong($input);
+ dims[0] = (npy_intp) $2;
+ array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
+ $1 = (DATA_TYPE*) array_data(array);
+}
+%typemap(argout)
+ (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
+{
+ $result = SWIG_Python_AppendOutput($result,array$argnum);
+}
+
+/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
+ */
+%typemap(in,numinputs=1,
+ fragment="NumPy_Fragments")
+ (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
+ (PyObject * array = NULL)
+{
+ npy_intp dims[1];
+ if (!PyInt_Check($input))
+ {
+ char* typestring = pytype_string($input);
+ PyErr_Format(PyExc_TypeError,
+ "Int dimension expected. '%s' given.",
+ typestring);
+ SWIG_fail;
+ }
+ $1 = (DIM_TYPE) PyInt_AsLong($input);
+ dims[0] = (npy_intp) $1;
+ array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
+ $2 = (DATA_TYPE*) array_data(array);
+}
+%typemap(argout)
+ (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
+{
+ $result = SWIG_Python_AppendOutput($result,array$argnum);
+}
+
+/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
+ */
+%typemap(in,numinputs=0,
+ fragment="NumPy_Backward_Compatibility,NumPy_Macros")
+ (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
+ (PyObject * array = NULL)
+{
+ npy_intp dims[2] = { $1_dim0, $1_dim1 };
+ array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(argout)
+ (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
+{
+ $result = SWIG_Python_AppendOutput($result,array$argnum);
+}
+
+/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
+ */
+%typemap(in,numinputs=0,
+ fragment="NumPy_Backward_Compatibility,NumPy_Macros")
+ (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
+ (PyObject * array = NULL)
+{
+ npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
+ array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
+ if (!array) SWIG_fail;
+ $1 = ($1_ltype) array_data(array);
+}
+%typemap(argout)
+ (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
+{
+ $result = SWIG_Python_AppendOutput($result,array$argnum);
+}
+
+/*****************************/
+/* Argoutview Array Typemaps */
+/*****************************/
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
+{
+ npy_intp dims[1] = { *$2 };
+ PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DATA_TYPE** ARGOUTVIEW_ARRAY1)
+ (DIM_TYPE dim_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim_temp;
+ $2 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
+{
+ npy_intp dims[1] = { *$1 };
+ PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+{
+ npy_intp dims[2] = { *$2, *$3 };
+ PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_ARRAY2)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
+{
+ npy_intp dims[2] = { *$1, *$2 };
+ PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
+ (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
+{
+ npy_intp dims[2] = { *$2, *$3 };
+ PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || !require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_FARRAY2)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
+{
+ npy_intp dims[2] = { *$1, *$2 };
+ PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || !require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
+ DIM_TYPE* DIM3)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+ $4 = &dim3_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+{
+ npy_intp dims[3] = { *$2, *$3, *$4 };
+ PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
+ DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &dim3_temp;
+ $4 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
+{
+ npy_intp dims[3] = { *$1, *$2, *$3 };
+ PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
+ if (!array) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,array);
+}
+
+/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
+ DIM_TYPE* DIM3)
+ */
+%typemap(in,numinputs=0)
+ (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+ (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
+{
+ $1 = &data_temp;
+ $2 = &dim1_temp;
+ $3 = &dim2_temp;
+ $4 = &dim3_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
+{
+ npy_intp dims[3] = { *$2, *$3, *$4 };
+ PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
+ DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ */
+%typemap(in,numinputs=0)
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+ (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
+{
+ $1 = &dim1_temp;
+ $2 = &dim2_temp;
+ $3 = &dim3_temp;
+ $4 = &data_temp;
+}
+%typemap(argout,
+ fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
+ (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
+{
+ npy_intp dims[3] = { *$1, *$2, *$3 };
+ PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
+ PyArrayObject * array = (PyArrayObject*) obj;
+ if (!array || require_fortran(array)) SWIG_fail;
+ $result = SWIG_Python_AppendOutput($result,obj);
+}
+
+%enddef /* %numpy_typemaps() macro */
+/* *************************************************************** */
+
+/* Concrete instances of the %numpy_typemaps() macro: Each invocation
+ * below applies all of the typemaps above to the specified data type.
+ */
+%numpy_typemaps(signed char , NPY_BYTE , int)
+%numpy_typemaps(unsigned char , NPY_UBYTE , int)
+%numpy_typemaps(short , NPY_SHORT , int)
+%numpy_typemaps(unsigned short , NPY_USHORT , int)
+%numpy_typemaps(int , NPY_INT , int)
+%numpy_typemaps(unsigned int , NPY_UINT , int)
+%numpy_typemaps(long , NPY_LONG , int)
+%numpy_typemaps(unsigned long , NPY_ULONG , int)
+%numpy_typemaps(long long , NPY_LONGLONG , int)
+%numpy_typemaps(unsigned long long, NPY_ULONGLONG, int)
+%numpy_typemaps(float , NPY_FLOAT , int)
+%numpy_typemaps(double , NPY_DOUBLE , int)
+
+/* ***************************************************************
+ * The follow macro expansion does not work, because C++ bool is 4
+ * bytes and NPY_BOOL is 1 byte
+ *
+ * %numpy_typemaps(bool, NPY_BOOL, int)
+ */
+
+/* ***************************************************************
+ * On my Mac, I get the following warning for this macro expansion:
+ * 'swig/python detected a memory leak of type 'long double *', no destructor found.'
+ *
+ * %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
+ */
+
+/* ***************************************************************
+ * Swig complains about a syntax error for the following macro
+ * expansions:
+ *
+ * %numpy_typemaps(complex float, NPY_CFLOAT , int)
+ *
+ * %numpy_typemaps(complex double, NPY_CDOUBLE, int)
+ *
+ * %numpy_typemaps(complex long double, NPY_CLONGDOUBLE, int)
+ */
+
+#endif /* SWIGPYTHON */
register long i,j,k1,k2;
SetPenPal(mgl_have_color(stl) ? stl:AxisStl);
-
+ static int cgid=1; StartGroup("Axis",cgid++);
+
p = o + d*aa.v1; k1 = AddPnt(p,CDef,q,-1,3);
for(i=1;i<31;i++) // axis itself
{
for(v=v0;v<aa.v2;v+=aa.ds) tick_draw(o+d*v,da,db,1,stl);
}
if(text) DrawLabels(aa);
+ EndGroup();
}
//-----------------------------------------------------------------------------
void mglCanvas::DrawLabels(mglAxis &aa)
AdjustTicks(dir,false);
SetPenPal(pen);
// TODO: Ternary axis labeling ...
+ static int cgid=1; StartGroup("AxisGrid",cgid++);
if(strchr(dir,'x')) DrawGrid(ax);
if(strchr(dir,'y')) DrawGrid(ay);
if(strchr(dir,'z')) DrawGrid(az);
+ EndGroup();
}
//-----------------------------------------------------------------------------
void mglCanvas::DrawGrid(mglAxis &aa)
}\r
mglBase::~mglBase() { ClearEq(); }\r
//-----------------------------------------------------------------------------\r
-float mglBase::GetRatio() { return 1; }\r
+float mglBase::GetRatio() const { return 1; }\r
//-----------------------------------------------------------------------------\r
void mglBase::StartGroup(const char *name, int id)\r
{\r
q.c=c; q.t=a; q.u=n.x; q.v=n.y; q.w=n.z;\r
}\r
q.x=q.xx=int(p.x*100)*0.01; q.y=q.yy=p.y; q.z=q.zz=p.z;\r
- q.c=c; q.t=a; q.u=n.x; q.v=n.y; q.w=n.z;\r
- Txt[long(c)].GetC(c,a,q); // RGBA color\r
+ q.c=c; q.t=q.ta=a; q.u=n.x; q.v=n.y; q.w=n.z;\r
+ const mglTexture &txt=Txt[long(c)];\r
+ txt.GetC(c,a,q); // RGBA color\r
\r
- if(!get(MGL_ENABLE_ALPHA)) q.a=1;\r
+ if(!get(MGL_ENABLE_ALPHA)) { q.a=1; if(txt.Smooth!=2) q.ta=1; }\r
if(scl&8 && scl>0) q.a=a; // bypass palette for enabling alpha in Error()\r
if(!get(MGL_ENABLE_LIGHT) && !(scl&4)) q.u=q.v=NAN;\r
MGL_PUSH(Pnt,q,mutexPnt); return Pnt.size()-1;\r
}\r
}\r
//-----------------------------------------------------------------------------\r
-bool mglBase::ScalePoint(mglPoint &p, mglPoint &n, bool use_nan)\r
+bool mglBase::ScalePoint(mglPoint &p, mglPoint &n, bool use_nan) const\r
{\r
float &x=p.x, &y=p.y, &z=p.z;\r
if(isnan(x) || isnan(y) || isnan(z)) { x=NAN; return false; }\r
delete []c;\r
}\r
//-----------------------------------------------------------------------------\r
-void mglTexture::GetC(float u,float v,mglPnt &p)\r
+void mglTexture::GetC(float u,float v,mglPnt &p) const\r
{\r
u -= long(u);\r
register long i=long(256*u); u = u*256-i;\r
- mglColor *s=col+2*i;\r
+ const mglColor *s=col+2*i;\r
p.r = (s[0].r*(1-u)+s[2].r*u)*(1-v) + (s[1].r*(1-u)+s[3].r*u)*v;\r
p.g = (s[0].g*(1-u)+s[2].g*u)*(1-v) + (s[1].g*(1-u)+s[3].g*u)*v;\r
p.b = (s[0].b*(1-u)+s[2].b*u)*(1-v) + (s[1].b*(1-u)+s[3].b*u)*v;\r
p.a = (s[0].a*(1-u)+s[2].a*u)*v + (s[1].a*(1-u)+s[3].a*u)*(1-v); // for alpha use inverted\r
}\r
//-----------------------------------------------------------------------------\r
-bool mglTexture::IsSame(mglTexture &t)\r
+bool mglTexture::IsSame(mglTexture &t) const\r
{ return n==t.n && !memcmp(col,t.col,514*sizeof(mglColor)); }\r
//-----------------------------------------------------------------------------\r
long mglBase::AddTexture(const char *cols, int smooth)\r
return mk;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglBase::GetA(float a)\r
+float mglBase::GetA(float a) const\r
{\r
- if(fa) a = fa->Calc(0,0,0,a);\r
+ if(fa) a = fa->Calc(0,0,0,a);\r
a = (a-FMin.c)/(FMax.c-FMin.c);\r
a = (a<1?(a>0?a:0):1)/MGL_FLT_EPS; // for texture a must be <1 always!!!\r
return a;\r
//-----------------------------------------------------------------------------\r
const unsigned char *mglCanvas::GetBits() { Finish(); return G; }\r
//-----------------------------------------------------------------------------\r
-float mglCanvas::GetRatio() { return inW/inH; }\r
+float mglCanvas::GetRatio() const { return inW/inH; }\r
//-----------------------------------------------------------------------------\r
void mglCanvas::add_prim(mglPrim &a)\r
{\r
std::vector<mglTexture> Txt; ///< Pointer to textures\r
char *Message; ///< Buffer for receiving messages\r
long InUse; ///< Smart pointer (number of users)\r
-mglPoint LastMousePos; ///< Last mouse position\r
mglFont *fnt; ///< Class for printing vector text\r
int Quality; ///< Quality of plot (0x0-pure, 0x1-fast; 0x2-fine; 0x4 - low memory)\r
int Width; ///< Width of the image\r
//-----------------------------------------------------------------------------\r
// Optimal axis position\r
//-----------------------------------------------------------------------------\r
-float mglCanvas::FindOptOrg(char dir, int ind)\r
+float mglCanvas::FindOptOrg(char dir, int ind) const\r
{\r
static mglPoint px, py, pz, m1, m2;\r
static mglMatrix bb; bb.b[0]=1e30;\r
return res;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglCanvas::GetOrgX(char dir)\r
+float mglCanvas::GetOrgX(char dir) const\r
{\r
float res = Org.x;\r
if(isnan(res))\r
return res;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglCanvas::GetOrgY(char dir)\r
+float mglCanvas::GetOrgY(char dir) const\r
{\r
float res = Org.y;\r
if(isnan(res))\r
return res;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglCanvas::GetOrgZ(char dir)\r
+float mglCanvas::GetOrgZ(char dir) const\r
{\r
float res = Org.z;\r
if(isnan(res))\r
Bp.x=(x1+x2)/2/Bp.b[0]; Bp.y=(y1+y2)/2/Bp.b[4];\r
}\r
//-----------------------------------------------------------------------------\r
-int mglCanvas::GetSplId(long x,long y)\r
+int mglCanvas::GetSplId(long x,long y) const\r
{\r
register long i,id=-1;\r
for(i=Sub.size()-1;i>=0;i--)\r
ll = hypot(lx,ly)/(PenWidth*ArrowSize*0.35*font_factor);\r
if(ll==0) return;\r
lx /= ll; ly /= ll; kx = ly; ky = -lx;\r
+ float lz = (p2.z-p1.z)/ll;\r
+\r
Reserve(6);\r
long k1,k2,k3,k4;\r
\r
q2.xx=q2.x=p1.x-kx; q2.yy=q2.y=p1.y-ky; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
line_plot(k1,k2); break;\r
case 'D':\r
- q1.xx=q1.x=p1.x+kx; q1.yy=q1.y=p1.y+ky; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x+lx; q2.yy=q2.y=p1.y+ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x-kx; q3.yy=q3.y=p1.y-ky; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
- q4.xx=q4.x=p1.x-lx; q4.yy=q4.y=p1.y-ly; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
+ q1.xx=q1.x=p1.x+kx; q1.yy=q1.y=p1.y+ky; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
+ q2.xx=q2.x=p1.x+lx; q2.yy=q2.y=p1.y+ly; q2.zz=q2.z=p1.z+lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x-kx; q3.yy=q3.y=p1.y-ky; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q4.xx=q4.x=p1.x-lx; q4.yy=q4.y=p1.y-ly; q4.zz=q4.z=p1.z-lz; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
quad_plot(k1,k2,k4,k3); break;\r
case 'S':\r
- q1.xx=q1.x=p1.x+kx-lx; q1.yy=q1.y=p1.y+ky-ly; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x-kx-lx; q2.yy=q2.y=p1.y-ky-ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x-kx+lx; q3.yy=q3.y=p1.y-ky+ly; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
- q4.xx=q4.x=p1.x+kx+lx; q4.yy=q4.y=p1.y+ky+ly; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
+ q1.xx=q1.x=p1.x+kx-lx; q1.yy=q1.y=p1.y+ky-ly; q1.zz=q1.z=p1.z-lz; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
+ q2.xx=q2.x=p1.x-kx-lx; q2.yy=q2.y=p1.y-ky-ly; q2.zz=q2.z=p1.z-lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x-kx+lx; q3.yy=q3.y=p1.y-ky+ly; q3.zz=q3.z=p1.z+lz; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q4.xx=q4.x=p1.x+kx+lx; q4.yy=q4.y=p1.y+ky+ly; q4.zz=q4.z=p1.z+lz; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
quad_plot(k1,k2,k4,k3); break;\r
case 'T':\r
- q1.xx=q1.x=p1.x+kx-lx; q1.yy=q1.y=p1.y+ky-ly; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x-kx-lx; q2.yy=q2.y=p1.y-ky-ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x+lx; q3.yy=q3.y=p1.y+ly; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q1.xx=q1.x=p1.x+kx-lx; q1.yy=q1.y=p1.y+ky-ly; q1.zz=q1.z=p1.z-lz; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
+ q2.xx=q2.x=p1.x-kx-lx; q2.yy=q2.y=p1.y-ky-ly; q2.zz=q2.z=p1.z-lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x+lx; q3.yy=q3.y=p1.y+ly; q3.zz=q3.z=p1.z+lz; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
trig_plot(k1,k2,k3); break;\r
case 'A':\r
// q1.xx=q1.x=p1.x; q1.yy=q1.y=p1.y; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x-kx-2*lx; q2.yy=q2.y=p1.y-ky-2*ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x-1.5*lx; q3.yy=q3.y=p1.y-1.5*ly; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
- q4.xx=q4.x=p1.x+kx-2*lx; q4.yy=q4.y=p1.y+ky-2*ly; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
- trig_plot(n1,k2,k3); trig_plot(n1,k4,k3); break;\r
+ q2.xx=q2.x=p1.x-kx-2*lx; q2.yy=q2.y=p1.y-ky-2*ly; q2.zz=q2.z=p1.z-2*lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x-1.5*lx; q3.yy=q3.y=p1.y-1.5*ly; q3.zz=q3.z=p1.z-1.5*lz; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q4.xx=q4.x=p1.x+kx-2*lx; q4.yy=q4.y=p1.y+ky-2*ly; q4.zz=q4.z=p1.z-2*lz; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
+ trig_plot(n1,k2,k3); trig_plot(n1,k3,k4); break;\r
case 'K':\r
// q1.xx=q1.x=p1.x; q1.yy=q1.y=p1.y; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x-kx-2*lx; q2.yy=q2.y=p1.y-ky-2*ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x-1.5*lx; q3.yy=q3.y=p1.y-1.5*ly; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
- q4.xx=q4.x=p1.x+kx-2*lx; q4.yy=q4.y=p1.y+ky-2*ly; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
- trig_plot(n1,k2,k3); trig_plot(n1,k4,k3);\r
+ q2.xx=q2.x=p1.x-kx-2*lx; q2.yy=q2.y=p1.y-ky-2*ly; q2.zz=q2.z=p1.z-2*lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x-1.5*lx; q3.yy=q3.y=p1.y-1.5*ly; q3.zz=q3.z=p1.z-1.5*lz; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q4.xx=q4.x=p1.x+kx-2*lx; q4.yy=q4.y=p1.y+ky-2*ly; q4.zz=q4.z=p1.z-2*lz; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
+ trig_plot(n1,k2,k3); trig_plot(n1,k3,k4);\r
q1.xx=q1.x=p1.x+kx; q1.yy=q1.y=p1.y+ky; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
q2.xx=q2.x=p1.x-kx; q2.yy=q2.y=p1.y-ky; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
line_plot(k1,k2); break;\r
case 'V':\r
// q1.xx=q1.x=p1.x; q1.yy=q1.y=p1.y; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
- q2.xx=q2.x=p1.x-kx+2*lx; q2.yy=q2.y=p1.y-ky+2*ly; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
- q3.xx=q3.x=p1.x+1.5*lx; q3.yy=q3.y=p1.y+1.5*ly; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
- q4.xx=q4.x=p1.x+kx+2*lx; q4.yy=q4.y=p1.y+ky+2*ly; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
- trig_plot(n1,k2,k3); trig_plot(n1,k4,k3); break;\r
+ q2.xx=q2.x=p1.x-kx+2*lx; q2.yy=q2.y=p1.y-ky+2*ly; q2.zz=q2.z=p1.z-2*lz; k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
+ q3.xx=q3.x=p1.x+1.5*lx; q3.yy=q3.y=p1.y+1.5*ly; q3.zz=q3.z=p1.z-1.5*lz; k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
+ q4.xx=q4.x=p1.x+kx+2*lx; q4.yy=q4.y=p1.y+ky+2*ly; q4.zz=q4.z=p1.z-2*lz; k4=Pnt.size(); MGL_PUSH(Pnt,q4,mutexPnt);\r
+ trig_plot(n1,k2,k3); trig_plot(n1,k3,k4); break;\r
case 'O':\r
{\r
q1.xx=q1.x=p1.x; q1.yy=q1.y=p1.y; k1=Pnt.size(); MGL_PUSH(Pnt,q1,mutexPnt);\r
for(int i=0;i<16;i++)\r
{\r
t = M_PI*i/8.; s=sin(t); c=cos(t);\r
- q2.xx=q2.x=p1.x+kx*s+lx*c; q2.yy=q2.y=p1.y+ky*s+ly*c;\r
+ q2.xx=q2.x=p1.x+kx*s+lx*c; q2.yy=q2.y=p1.y+ky*s+ly*c; q2.zz=q2.z=p1.z+c*lz;\r
k2=Pnt.size(); MGL_PUSH(Pnt,q2,mutexPnt);\r
t = M_PI*(i+1)/8.; s=sin(t); c=cos(t);\r
- q3.xx=q3.x=p1.x+kx*s+lx*c; q3.yy=q3.y=p1.y+ky*s+ly*c;\r
+ q3.xx=q3.x=p1.x+kx*s+lx*c; q3.yy=q3.y=p1.y+ky*s+ly*c; q3.zz=q2.z=p1.z+c*lz;\r
k3=Pnt.size(); MGL_PUSH(Pnt,q3,mutexPnt);\r
trig_plot(k1,k2,k3);\r
}\r
if(k4==2) k2=0;\r
if(k4==1) k1=k2=0;\r
float c1=AddTexture(char(k1?k1:'w')), c2=AddTexture(char(k2?k2:'k'));\r
- if((Flag&3)==2) { float cc=c1; c2=c2; c2=cc; };\r
+ if((Flag&3)==2) { float cc=c1; c2=c1; c2=cc; };\r
\r
if(strchr(ff,'#')) // draw bounding box\r
{\r
if(box) // draw boungind box\r
{\r
float c1=AddTexture('w'), c2=AddTexture('k');\r
- if((Flag&3)==2) { float cc=c1; c2=c2; c2=cc; };\r
+ if((Flag&3)==2) { float cc=c1; c2=c1; c2=cc; };\r
long k1,k2,k3,k4;\r
k1=AddPnt(mglPoint(x,y,Depth),c1,q,-1,0);\r
k2=AddPnt(mglPoint(x+inW,y,Depth),c1,q,-1,0);\r
{ _Gr_->Label(dir,text,pos,shift); }\r
void mgl_labelw_ext(HMGL gr, char dir, const wchar_t *text, float pos, float shift)\r
{ _Gr_->Labelw(dir,text,pos,shift); }\r
-void mgl_label_pos(HMGL gr, float x, float y, const char *text, const char *fnt)\r
-{ _Gr_->Label(x,y,text,fnt); }\r
-void mgl_labelw_pos(HMGL gr, float x, float y, const wchar_t *text, const char *fnt)\r
-{ _Gr_->Labelw(x,y,text,fnt); }\r
//-----------------------------------------------------------------------------\r
void mgl_colorbar(HMGL gr, const char *sch)\r
{ _Gr_->Colorbar(sch); }\r
void mgl_label_ext_(uintptr_t *gr, const char *dir, const char *text, float *pos, float *shift,int,int l)\r
{ char *s=new char[l+1]; memcpy(s,text,l); s[l]=0;\r
_GR_->Label(*dir, s, *pos, *shift); delete []s; }\r
-void mgl_label_pos_(uintptr_t *gr, float *x, float *y, const char *txt, const char *fnt,int l,int n)\r
-{ char *s=new char[l+1]; memcpy(s,txt,l); s[l]=0;\r
- char *p=new char[n+1]; memcpy(p,fnt,n); p[n]=0;\r
- _GR_->Label(*x,*y,s,p); delete []s; delete []p; }\r
//-----------------------------------------------------------------------------\r
void mgl_colorbar_(uintptr_t *gr, const char *sch,int l)\r
{ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;\r
float mgl_diff_expr_(uintptr_t *ex, const char *dir, float *x, float *y,float *z, int)\r
{ return mgl_expr_diff((HMEX) ex, *dir,*x,*y,*z); }\r
//-----------------------------------------------------------------------------\r
+void mgl_set_plotfactor(HMGL gr, float val)\r
+{ _Gr_->SetPlotFactor(val); }\r
+void mgl_set_plotfactor_(uintptr_t *gr, float *val)\r
+{ _GR_->SetPlotFactor(*val); }\r
+//-----------------------------------------------------------------------------\r
//-----------------------------------------------------------------------------
int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *opt)
{
- if(k[0]==3 && k[1]==3 && k[2]==2)
- gr->Label(a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():"");
- else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2)
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2)
gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt);
else if(k[0]==1 && k[1]==1 && k[2]==2)
gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt);
}
void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt)
{
- if(k[0]==3 && k[1]==3 && k[2]==2)
- mglprintf(out,1024,L"gr->Label(%g, %g, \"%ls\", \"%s\");", a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():"");
- else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2)
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2)
mglprintf(out,1024,L"gr->Label(%s, %s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt);
else if(k[0]==1 && k[1]==1 && k[2]==2)
mglprintf(out,1024,L"gr->Label(%s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt);
//-----------------------------------------------------------------------------
int mgls_write(mglGraph *gr, long , mglArg *a, int k[10], const char *)
{
- if(k[0]==2) gr->WriteFrame(a[0].s.c_str(), "MathGL");
- else return 1;
+ gr->WriteFrame(k[0]==2?a[0].s.c_str():"", "MathGL");
return 0;
}
void mglc_write(wchar_t out[1024], long , mglArg *a, int k[10], const char *)
{
- if(k[0]==2)
- mglprintf(out,1024,L"gr->WriteFrame(\"%s\", \"MathGL\");", a[0].s.c_str());
+ mglprintf(out,1024,L"gr->WriteFrame(\"%s\", \"MathGL\");", k[0]==2?a[0].s.c_str():"");
}
//-----------------------------------------------------------------------------
int mgls_region(mglGraph *gr, long , mglArg *a, int k[10], const char *opt)
int mgl_pnga_save(const char *fname, int w, int h, unsigned char **p);\r
void mgl_printf(void *fp, bool gz, const char *str, ...);\r
//-----------------------------------------------------------------------------\r
-void mglTexture::GetRGBA(unsigned char *f)\r
+void mglTexture::GetRGBA(unsigned char *f) const\r
{\r
register long i,j,i0;\r
mglColor c1,c2,c;\r
delete []ng;\r
\r
unsigned len=strlen(fname),ntxt=gr->GetTxtNum();\r
- char *tname = new char[len+1]; strcpy(tname,fname);\r
+ char *tname = new char[len+5]; strcpy(tname,fname);\r
FILE *fp=fopen(fname,"wt");\r
// vertices definition\r
fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname);\r
{\r
mglPnt pp = gr->GetPnt(i);\r
fprintf(fp,"v %g %g %g\n",pp.x,pp.y,pp.z);\r
- fprintf(fp,"vt %g %g\n",pp.t,pp.c/ntxt);\r
+ fprintf(fp,"vt %g %g\n",1-pp.ta,pp.c/ntxt);\r
// if(isnan(pp.u)) fprintf(fp,"vn 0 0 0\n");\r
// else fprintf(fp,"vn %g %g %g\n",pp.u,pp.v,pp.w);\r
}\r
fprintf(fp,"Kd 1.000 1.000 1.000\n");\r
fprintf(fp,"Ks 0.000 0.000 0.000\n");\r
fprintf(fp,"d 1.0\nillum 2\n");\r
- if(use_png)\r
- { tname[len-4]='.'; tname[len-3]='p'; tname[len-2]='n'; tname[len-1]='g'; }\r
- else\r
- { tname[len-4]='.'; tname[len-3]='t'; tname[len-2]='g'; tname[len-1]='a'; }\r
+ if(use_png) strcat(tname,"_txt.png");\r
+// { tname[len-4]='.'; tname[len-3]='p'; tname[len-2]='n'; tname[len-1]='g'; }\r
+ else strcat(tname,"_txt.tga");\r
+// { tname[len-4]='.'; tname[len-3]='t'; tname[len-2]='g'; tname[len-1]='a'; }\r
fprintf(fp,"map_Ka %s\nmap_Kd %s\nmap_Ks %s\n",tname,tname,tname);\r
fclose(fp);\r
// prepare texture file (TGA or PNG)\r
if(!fp) return true;\r
// NOTE: I'll save Ptx. So prim type=6 is useless,and no LaTeX\r
fprintf(fp,"MGLD %lu %lu %lu\n# %s\n", Pnt.size(), Prm.size(), Txt.size(), (descr && *descr) ? descr : fname);\r
- register size_t i,j;\r
- fprintf(fp,"# Vertexes: x y z c t u v w r g b a\n");\r
+ register size_t i;\r
+ fprintf(fp,"# Vertexes: x y z c t ta u v w r g b a\n");\r
for(i=0;i<Pnt.size();i++)\r
{\r
const mglPnt &q=Pnt[i];\r
- fprintf(fp,"%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\n", q.xx, q.yy, q.zz, q.c, q.t, q.u, q.v, q.w, q.r, q.g, q.b, q.a);\r
+ fprintf(fp,"%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\t%.4g\n", q.xx, q.yy, q.zz, q.c, q.t, q.ta, q.u, q.v, q.w, q.r, q.g, q.b, q.a);\r
}\r
fprintf(fp,"# Primitives: type n1 n2 n3 n4 id s w p\n");\r
for(i=0;i<Prm.size();i++)\r
if(!fgets(buf,512,fp)) *buf=0;\r
if(strncmp(buf,"MGLD",4)) { delete []buf; fclose(fp); return true; }\r
register size_t i;\r
- size_t n,m,l;\r
+ size_t n,m,l, npnt;\r
sscanf(buf+5,"%lu%lu%lu",&n,&m,&l);\r
if(n<=0 || m<=0 || l<=0) { delete []buf; fclose(fp); return true; }\r
if(!add) { Clf(); Txt.clear(); }\r
- else ClfZB();\r
+ else { ClfZB(); npnt=Pnt.size(); }\r
Pnt.reserve(n); Prm.reserve(m); Txt.reserve(l);\r
mglPnt p;\r
for(i=0;i<n;i++)\r
{\r
do { if(!fgets(buf,512,fp)) *buf=0; mgl_strtrim(buf); } while(*buf=='#');\r
- sscanf(buf,"%g%g%g%g%g%g%g%g%g%g%g%g", &p.xx, &p.yy, &p.zz, &p.c, &p.t, &p.u, &p.v, &p.w, &p.r, &p.g, &p.b, &p.a);\r
+ sscanf(buf,"%g%g%g%g%g%g%g%g%g%g%g%g%g", &p.xx, &p.yy, &p.zz, &p.c, &p.t, &p.ta, &p.u, &p.v, &p.w, &p.r, &p.g, &p.b, &p.a);\r
Pnt.push_back(p);\r
}\r
mglPrim q;\r
{\r
do { if(!fgets(buf,512,fp)) *buf=0; mgl_strtrim(buf); } while(*buf=='#');\r
sscanf(buf,"%d%ld%ld%ld%ld%d%g%g%g", &q.type, &q.n1, &q.n2, &q.n3, &q.n4, &q.id, &q.s, &q.w, &q.p);\r
- if(q.type>4) continue;\r
- Prm.push_back(q);\r
+ q.n1 = q.n1>=0?q.n1+npnt:-1;\r
+ q.n2 = q.n2>=0?q.n2+npnt:-1;\r
+ if(q.type==2 || q.type==3)\r
+ {\r
+ q.n3 = q.n3>=0?q.n3+npnt:-1;\r
+ q.n4 = q.n4>=0?q.n4+npnt:-1;\r
+ }\r
+ if(q.type<5) Prm.push_back(q);\r
}\r
mglTexture t;\r
for(i=0;i<l;i++)\r
return col;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Puts(const char *str,const char *how,float col)\r
+float mglFont::Puts(const char *str,const char *how,float col) const\r
{\r
int font=0, align=1;\r
char cc=mglGetStyle(how,&font,&align);\r
return w;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Width(const char *str,const char *how)\r
+float mglFont::Width(const char *str,const char *how) const\r
{\r
int font=0;\r
mglGetStyle(how,&font);\r
return w;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Puts(const wchar_t *str,const char *how,float col)\r
+float mglFont::Puts(const wchar_t *str,const char *how,float col) const\r
{\r
int font=0, align=1;\r
char cc=mglGetStyle(how,&font,&align);\r
return Puts(str, font, align,cc?-cc:col);\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Width(const wchar_t *str,const char *how)\r
+float mglFont::Width(const wchar_t *str,const char *how) const\r
{\r
int font=0;\r
mglGetStyle(how,&font);\r
return Width(str, font);\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Puts(const wchar_t *str,int font,int align, float col)\r
+float mglFont::Puts(const wchar_t *str,int font,int align, float col) const\r
{\r
if(numg==0) return 0;\r
float ww=0,w=0,h = (align&4) ? 500./fact[0] : 0;\r
return ww;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Width(const wchar_t *str,int font)\r
+float mglFont::Width(const wchar_t *str,int font) const\r
{\r
if(numg==0) return 0;\r
float ww=0,w=0;\r
return w;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Height(int font)\r
+float mglFont::Height(int font) const\r
{\r
if(numg==0) return 0;\r
int s = (font/MGL_FONT_BOLD)&3;\r
return (500.f)/fact[s];\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::Height(const char *how)\r
+float mglFont::Height(const char *how) const\r
{\r
if(numg==0) return 0;\r
int s=0;\r
return (500.f)/fact[s];\r
}\r
//-----------------------------------------------------------------------------\r
-long mglFont::Internal(unsigned s)\r
+long mglFont::Internal(unsigned s) const\r
{\r
register long i,i1=0,i2=numg-1;\r
register wchar_t j = wchar_t(s & MGL_FONT_MASK);\r
}\r
//-----------------------------------------------------------------------------\r
// parse LaTeX commands (mostly symbols and acents, and some font-style commands)\r
-unsigned mglFont::Parse(const wchar_t *s)\r
+unsigned mglFont::Parse(const wchar_t *s) const\r
{\r
register long k;\r
unsigned res = unsigned(-2); // Default is no symbol\r
return res;\r
}\r
//-----------------------------------------------------------------------------\r
-void mglFont::Convert(const wchar_t *str, unsigned *res)\r
+void mglFont::Convert(const wchar_t *str, unsigned *res) const\r
{\r
register unsigned r,i,j,k,i0;\r
wchar_t s[128], ch; // TeX command and current char\r
res[j] = 0;\r
}\r
//-----------------------------------------------------------------------------\r
-float mglFont::get_ptr(long &i,unsigned *str, unsigned **b1, unsigned **b2,float &w1,float &w2, float f1, float f2, int st)\r
+float mglFont::get_ptr(long &i,unsigned *str, unsigned **b1, unsigned **b2,float &w1,float &w2, float f1, float f2, int st) const\r
{\r
static unsigned s1[2]={0,0}, s2[2]={0,0};\r
register long k;\r
return w1>w2 ? w1 : w2;\r
}\r
//-----------------------------------------------------------------------------\r
-void mglFont::draw_ouline(int st, float x, float y, float f, float g, float ww, float ccol)\r
+void mglFont::draw_ouline(int st, float x, float y, float f, float g, float ww, float ccol) const\r
{\r
if(st&MGL_FONT_OLINE)\r
gr->Glyph(x,y+499*f/g, ww*g, (st&MGL_FONT_WIRE)?12:8, 0, ccol);\r
}\r
//-----------------------------------------------------------------------------\r
#define MGL_CLEAR_STYLE {st = style; yy = y; ff = f; ccol=col; a = (st/MGL_FONT_BOLD)&3;}\r
-float mglFont::Puts(const unsigned *text, float x,float y,float f,int style,float col)\r
+float mglFont::Puts(const unsigned *text, float x,float y,float f,int style,float col) const\r
{\r
if(numg==0) return 0;\r
register long j,k;\r
//-----------------------------------------------------------------------------\r
mglCanvasGL::~mglCanvasGL(){}\r
//-----------------------------------------------------------------------------\r
-void mglCanvasGL::Finish()\r
+void mglCanvasGL::Finish(bool fast)\r
{\r
if(Prm.size()>0)\r
{\r
- std::sort(Prm.begin(), Prm.end());\r
+ PreparePrim(fast);\r
glVertexPointer(3, GL_FLOAT, sizeof(mglPnt), &(Pnt[0].x));\r
glNormalPointer(GL_FLOAT, sizeof(mglPnt), &(Pnt[0].u));\r
glColorPointer(4, GL_FLOAT, sizeof(mglPnt), &(Pnt[0].r));\r
}\r
}\r
//-----------------------------------------------------------------------------\r
-void mglCanvas::PostScale(mglPoint &p)\r
+void mglCanvas::PostScale(mglPoint &p) const\r
{\r
mglPoint q=p/(2*B.pf);\r
p.x = B.x + q.x*B.b[0] + q.y*B.b[1] + q.z*B.b[2];\r
}*/\r
}\r
//-----------------------------------------------------------------------------\r
-bool mglCanvas::ScalePoint(mglPoint &p, mglPoint &n, bool use_nan)\r
+bool mglCanvas::ScalePoint(mglPoint &p, mglPoint &n, bool use_nan) const\r
{\r
bool res = get(MGL_DISABLE_SCALE) || mglBase::ScalePoint(p,n,use_nan);\r
if(TernAxis&4) return res;\r
}\r
//-----------------------------------------------------------------------------\r
// NOTE: Perspective, transformation formulas and lists are not support just now !!! Also it use LAST InPlot parameters!!!\r
-mglPoint mglCanvas::CalcXYZ(int xs, int ys)\r
+mglPoint mglCanvas::CalcXYZ(int xs, int ys) const\r
{\r
float s3 = 2*B.pf, x, y, z; // TODO: Take into account z-value of z-buffer\r
ys = Height - ys;\r
x = s3*(B.b[5]*xx-B.b[2]*yy)/d3;\r
z = s3*(B.b[0]*yy-B.b[3]*xx)/d3;\r
}\r
- LastMousePos = mglPoint(Min.x + (Max.x-Min.x)*(x+1)/2,\r
+ return mglPoint(Min.x + (Max.x-Min.x)*(x+1)/2,\r
Min.y + (Max.y-Min.y)*(y+1)/2,\r
Min.z + (Max.z-Min.z)*(z+1)/2);\r
- return LastMousePos;\r
}\r
//-----------------------------------------------------------------------------\r
-void mglCanvas::CalcScr(mglPoint p, int *xs, int *ys)\r
+void mglCanvas::CalcScr(mglPoint p, int *xs, int *ys) const\r
{\r
mglPoint n;\r
ScalePoint(p,n);\r
if(ys) *ys=int(p.y);\r
}\r
//-----------------------------------------------------------------------------\r
-mglPoint mglCanvas::CalcScr(mglPoint p)\r
+mglPoint mglCanvas::CalcScr(mglPoint p) const\r
{ int x,y; CalcScr(p,&x,&y); return mglPoint(x,y); }\r
//-----------------------------------------------------------------------------\r
//mglCanvas *mgl_tmp_gr;\r
{ mglPrim &q=Prm[i]; q.z = Pnt[q.n1].z; }\r
}\r
//-----------------------------------------------------------------------------\r
+void mglCanvas::PreparePrim(bool fast)\r
+{\r
+ mglStartThread(&mglCanvas::pxl_transform,this,Pnt.size());\r
+ if(fast) mglStartThread(&mglCanvas::pxl_setz,this,Prm.size());\r
+ else mglStartThread(&mglCanvas::pxl_setz_adv,this,Prm.size());\r
+ std::sort(Prm.begin(), Prm.end());\r
+}\r
+//-----------------------------------------------------------------------------\r
void mglCanvas::Finish(bool fast)\r
{\r
static mglMatrix bp;\r
if(get(MGL_FINISHED)) return; // nothing to do\r
if(!(Quality&4) && Prm.size()>0)\r
{\r
- mglStartThread(&mglCanvas::pxl_transform,this,Pnt.size());\r
- if(fast) mglStartThread(&mglCanvas::pxl_setz,this,Prm.size());\r
- else mglStartThread(&mglCanvas::pxl_setz_adv,this,Prm.size());\r
- std::sort(Prm.begin(), Prm.end()); bp=Bp;\r
+ PreparePrim(fast); bp=Bp;\r
// mglStartThread(&mglCanvas::pxl_primdr,this,Prm.size()); // TODO: check conflicts in pthreads\r
pxl_primdr(-1,Prm.size(),NULL);\r
}\r
@cindex SetWarn
@cindex GetWarn
-Normally user should set it to zero by @code{SetWarn(0);} before plotting and check if @var{GetWarn} return non zero after plotting. Only last warning will be saved. All warnings/errors produced by MathGL is not critical -- the plot just will not be drawn.
+Normally user should set it to zero by @code{SetWarn(0);} before plotting and check if @code{GetWarnCode()} or @code{Message()} return non zero after plotting. Only last warning will be saved. All warnings/errors produced by MathGL is not critical -- the plot just will not be drawn.
@deftypefn {Method on @code{mglGraph}} @code{void} SetWarn (@code{int} code, @code{const char *}info=@code{""})
@deftypefnx {C function} @code{void} mgl_set_warn (@code{HMGL} gr, @code{int} code, @code{const char *}info)
@deftypefn {Method on @code{mglGraph}} @code{const char *}Message ()
@deftypefnx {C function} @code{const char *}mgl_get_mess (@code{HMGL} gr)
-Set buffer for writing messages about matters why some plot are not drawn. Set to NULL to disable messages. The buffer length must be at least 1024. If @var{buf}[0]==0 then there are no messages.
+Return messages about matters why some plot are not drawn. If returned string is empty then there are no messages.
@end deftypefn
@deftypefn {Method on @code{mglGraph}} @code{int} GetWarnCode ()
@deftypefnx {Method on @code{mglGraph}} @code{void} SetFunc (@code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ=@code{""}, @code{const char *}EqA=@code{""})
@deftypefnx {C function} @code{void} mgl_set_func (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ, @code{const char *}EqA)
@end ifclear
-Sets transformation formulas for curvilinear coordinate. Each string should contain mathematical expression for real coordinate depending on internal coordinates @samp{x}, @samp{y}, @samp{z} and @samp{a} or @samp{c} for colorbar. For example, the cylindrical coordinates are introduced as @code{Axis("x*cos(y)", "x*sin(y)", "z");}. For removing of formulas the corresponding parameter should be empty or @code{NULL}. Using transformation formulas will slightly slowing the program. Parameter @var{EqA} set the similar transformation formula for color scheme. @xref{Textual formulas}.
+Sets transformation formulas for curvilinear coordinate. Each string should contain mathematical expression for real coordinate depending on internal coordinates @samp{x}, @samp{y}, @samp{z} and @samp{a} or @samp{c} for colorbar. For example, the cylindrical coordinates are introduced as @code{SetFunc("x*cos(y)", "x*sin(y)", "z");}. For removing of formulas the corresponding parameter should be empty or @code{NULL}. Using transformation formulas will slightly slowing the program. Parameter @var{EqA} set the similar transformation formula for color scheme. @xref{Textual formulas}.
@end deftypefn
@deftypefn {MGL command} {} axis @code{how}
@end deftypefn
@deftypefn {MGL command} {} tuneticks @code{val} [@code{pos=1.15}]
+@ifclear UDAV
@deftypefnx {Method on @code{mglGraph}} @code{void} SetTuneTicks (@code{int} tune, @code{float} pos=@code{1.15})
@deftypefnx {C function} @code{void} mgl_tune_ticks (@code{HMGL} gr, @code{int} tune, @code{float} pos)
+@end ifclear
Switch on/off ticks enhancing by factoring common multiplier (for small, like from 0.001 to 0.002, or large, like from 1000 to 2000, coordinate values -- enabled if @var{tune}&1 is nonzero) or common component (for narrow range, like from 0.999 to 1.000 -- enabled if @var{tune}&2 is nonzero). Also set the position @var{pos} of common multiplier/component on the axis: =0 at minimal axis value, =1 at maximal axis value. Default value is 1.15.
@end deftypefn
Pop (restore last 'pushed') transformation matrix into stack.
@end deftypefn
+@deftypefn {Method on @code{mglGraph}} @code{void} SetPlotFactor (@code{float} val)
+@deftypefnx {C function} @code{void} mgl_set_plotfactor (@code{HMGL} gr, @code{float} val)
+Sets the factor of plot size. It is not recommended to set it lower then 1.5. This is some analogue of function Zoom() but applied not to overall image but for each InPlot. Use negative value or zero to enable automatic selection.
+@end deftypefn
+
There are 2 functions @code{View()} and @code{Zoom()} which transform whole image. I.e. they act as secondary transformation matrix. They were introduced for rotating/zooming the whole plot by mouse.
@deftypefn {Method on @code{mglGraph}} @code{void} View (@code{float} TetX, @code{float} TetZ, @code{float} TetY=@code{0})
@cindex ShowImage
@end ifclear
-These functions export current view to a graphic file. The filename @var{fname} should have appropriate extension. Parameter @var{descr} gives the short description of the picture. Just now the transparency is supported in PNG and SVG files.
+These functions export current view to a graphic file. The filename @var{fname} should have appropriate extension. Parameter @var{descr} gives the short description of the picture. Just now the transparency is supported in PNG, SVG, OBJ and IDTF files.
@anchor{write}
-@deftypefn {MGL command} {} write 'fname'
+@deftypefn {MGL command} {} write ['fname'='']
@ifclear UDAV
@deftypefnx {Method on @code{mglGraph}} @code{void} WriteFrame (@code{const char *}fname=@code{""}, @code{const char *}descr=@code{""})
@deftypefnx {C function} @code{void} mgl_write_frame (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
@deftypefn {Method on @code{mglGraph}} @code{void} WriteSTL (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {C function} @code{void} mgl_write_stl (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-Exports current frame to STL file using vector representation (see @url{http://en.wikipedia.org/wiki/STL_(file_format), STL format} for details). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
+Exports current frame to STL file using vector representation (see @url{http://en.wikipedia.org/wiki/STL_(file_format), STL format} for details). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name.
@end deftypefn
@deftypefn {Method on @code{mglGraph}} @code{void} WriteOFF (@code{const char *}fname, @code{const char *}descr=@code{""}, @code{bool} colored=@code{false})
@c @deftypefn {Method on @code{mglGraph}} @code{void} WriteX3D (@code{const char *}fname, @code{const char *}descr=@code{""})
@c @deftypefnx {C function} @code{void} mgl_write_x3d (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-@c Exports current frame to OBJ/MTL file using vector representation (see @url{http://en.wikipedia.org/wiki/X3d, X3D format} for details). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
+@c Exports current frame to X3D file using vector representation (see @url{http://en.wikipedia.org/wiki/X3d, X3D format} for details). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
@c @end deftypefn
Exports points and primitives in file using MGLD format. Later this file can be used for faster loading and viewing by @code{mglview} utility. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} ImportMGLD (@code{const char *}fname, @code{const char *}descr=@code{""})
-@deftypefnx {C function} @code{void} mgl_import_mgld (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-Imports points and primitives in file using MGLD format. Later this file can be used for faster loading and viewing by @code{mglview} utility. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
+@deftypefn {Method on @code{mglGraph}} @code{void} ImportMGLD (@code{const char *}fname, @code{bool} add=@code{false})
+@deftypefnx {C function} @code{void} mgl_import_mgld (@code{HMGL} gr, @code{const char *}fname, @code{int} add)
+Imports points and primitives in file using MGLD format. Later this file can be used for faster loading and viewing by @code{mglview} utility. Parameter @var{fname} specifies the file name, @var{add} sets to append or replace primitives to existed ones.
@end deftypefn
@end ifclear
@deftypefn {MGL command} {} drop @code{x0 y0 dx dy r} ['col'='r' @code{sh=1 asp=1}]
@deftypefnx {MGL command} {} drop @code{x0 y0 z0 dx dy dz r} ['col'='r' @code{sh=1 asp=1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Drop (@code{mglPoint} p, @code{mglPoint} d, @code{float} r, @code{const char *}stl=@code{"r"}, @code{float} shift=@code{1}, @code{float} ap=@code{1})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Drop (@code{mglPoint} p, @code{mglPoint} d, @code{float} r, @code{const char *}col=@code{"r"}, @code{float} shift=@code{1}, @code{float} ap=@code{1})
@deftypefnx {C function} @code{void} mgl_drop (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} dx, @code{float} dy, @code{float} dz, @code{float} r, @code{const char *}col, @code{float} shift, @code{float} ap)
@end ifclear
Draw the drop with radius @var{r} at point @var{p} elongated in direction @var{d} and with color @var{col}. Parameter @var{shift} set the degree of drop oblongness: @samp{0} is sphere, @samp{1} is maximally oblongness drop. Parameter @var{ap} set relative width of the drop (this is analogue of ``ellipticity'' for the sphere).
@cindex Label
@cindex fgets
-These functions draw the text. There are functions for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. MathGL can use arbitrary font-faces and parse many TeX commands (for more details see @ref{Font styles}). All these functions have 2 variant: for printing 8-bit text (@code{char *}) and for printing Unicode text (@code{wchar_t *}). In first case the conversion in current locale is used. So sometimes you need to specify it by @code{setlocale()} function. The size argument control the size of text: if positive it give the value, if negative it give the value relative to @var{FontSize}. The font type (STIX, arial, courier, times and so on) can be selected by function LoadFont(). @xref{Font settings}.
+These functions draw the text. There are functions for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. MathGL can use arbitrary font-faces and parse many TeX commands (for more details see @ref{Font styles}). All these functions have 2 variant: for printing 8-bit text (@code{char *}) and for printing Unicode text (@code{wchar_t *}). In first case the conversion into the current locale is used. So sometimes you need to specify it by @code{setlocale()} function. The size argument control the size of text: if positive it give the value, if negative it give the value relative to @var{SetFontSize()}. The font type (STIX, arial, courier, times and so on) can be selected by function LoadFont(). @xref{Font settings}.
The font parameters are described by string. This string may set the text color @samp{wkrgbcymhRGBCYMHW} (see @ref{Color styles}). Also, after delimiter symbol @samp{:}, it can contain characters of font type (@samp{rbiwou}) and/or align (@samp{LRC}) specification. The font types are: @samp{r} -- roman (or regular) font, @samp{i} -- italic style, @samp{b} -- bold style, @samp{w} -- wired style, @samp{o} -- over-lined text, @samp{u} -- underlined text. By default roman font is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. For example, string @samp{b:iC} correspond to italic font style for centered text which printed by blue color.
Draws unrotated @var{n}-th line of file @var{fname} at position @{@var{x},@var{y},@var{z}@} with specified @var{size}. By default parameters from @ref{font} command are used.
@end deftypefn
-@deftypefn {MGL command} {} label @code{x y} 'text' ['fnt'='']
-@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{float} x, @code{float} y, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Labelw (@code{float} x, @code{float} y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {C function} @code{void} mgl_label_pos (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const char *}text, @code{const char *}fnt)
-@deftypefnx {C function} @code{void} mgl_labelw_pos (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const wchar_t *}text, @code{const char *}fnt)
-@end ifclear
-The function draws the string @var{text} at position @{@var{x}, @var{y}@} with fonts specifying by @var{fnt}. Coordinates @code{x, y} are supposed to be in range [0,1].
-@end deftypefn
-
@deftypefn {MGL command} {} text ydat 'text' ['fnt'='']
@deftypefnx {MGL command} {} text xdat ydat 'text' ['fnt'='']
@deftypefnx {Method on @code{mglGraph}} @code{void} Legend (@code{int} pos=@code{0x3}, @code{const char *}fnt=@code{"#"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@deftypefnx {C function} @code{void} mgl_legend (@code{HMGL} gr, @code{int} pos, @code{const char *}fnt, @code{float} size, @code{float} llen)
@end ifclear
-Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Parameter @var{pos} sets the position of the legend: @samp{0} is bottom left corner, @samp{1} is bottom right corner, @samp{2} is top left corner, @samp{3} is top right corner (is default). Paramater font can contain colors for face (1st one), for border (2nd one) and for text (last one). If less than 3 colors are specified then the color for border is black (for 2 and less colors), and the color for face is white (for 1 or none colors). If string @var{fnt} contain @samp{#} then border around the legend is drawn.
+Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Parameter @var{pos} sets the position of the legend: @samp{0} is bottom left corner, @samp{1} is bottom right corner, @samp{2} is top left corner, @samp{3} is top right corner (is default). Parameter @var{fnt} can contain colors for face (1st one), for border (2nd one) and for text (last one). If less than 3 colors are specified then the color for border is black (for 2 and less colors), and the color for face is white (for 1 or none colors). If string @var{fnt} contain @samp{#} then border around the legend is drawn.
@end deftypefn
@deftypefn {MGL command} {} legend @code{x y} ['fnt'='#' @code{size=-1 llen=0.1}]
@deftypefnx {Method on @code{mglGraph}} @code{void} Radar (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
@deftypefnx {C function} @code{void} mgl_radar (@code{HMGL} gr, @code{HCDT} a, @code{const char *}pen, @code{const char *}opt)
@end ifclear
-This functions draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). Parameter @var{value} in options @var{opt} set the additional shift of data (i.e. the data @var{a}+@var{value} is used instead of @var{a}). If @code{value<0} then @code{r=max(0, -min(value)}. If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn See also @ref{plot}. @sref{Radar sample}
+This functions draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). Parameter @var{value} in options @var{opt} set the additional shift of data (i.e. the data @var{a}+@var{value} is used instead of @var{a}). If @code{value<0} then @code{r=max(0, -min(value)}. If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn. See also @ref{plot}. @sref{Radar sample}
@end deftypefn
@anchor{step}
@deftypefnx {C function} @code{void} mgl_tens_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_tens_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt)
@end ifclear
-These functions draw continuous lines between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} with color defined by the special array @var{c}[i] (look like tension plot). String @var{pen} specifies the color scheme (see @ref{Color scheme}) and style and/or width of line (see @ref{Line styles}). By default (@code{pen=""}) solid line with current color scheme is used. See also @ref{plot}, @ref{mesh}, @ref{fall}. @sref{Tens sample}
+These functions draw continuous lines between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} with color defined by the special array @var{c}[i] (look like tension plot). String @var{pen} specifies the color scheme (see @ref{Color scheme}) and style and/or width of line (see @ref{Line styles}). See also @ref{plot}, @ref{mesh}, @ref{fall}. @sref{Tens sample}
@end deftypefn
@anchor{tape}
@deftypefnx {C function} @code{void} mgl_bars_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_bars_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
@end ifclear
-These functions draw vertical bars from points to axis plane. If string contain symbol @samp{a} then lines are drawn one above another (like summation). If string contain symbol @samp{f} then waterfall chart is drawn for determining the cumulative effect of sequentially introduced positive or negative values. You can give different colors for positive and negative values if number of specified colors is equal to 2*number of curves. See also @ref{barh}, @ref{cones}, @ref{area}, @ref{stem}, @ref{chart}, @ref{barwidth}. @sref{Bars sample}
+These functions draw vertical bars from points to axis plane. If string @var{pen} contain symbol @samp{a} then lines are drawn one above another (like summation). If string contain symbol @samp{f} then waterfall chart is drawn for determining the cumulative effect of sequentially introduced positive or negative values. You can give different colors for positive and negative values if number of specified colors is equal to 2*number of curves. See also @ref{barh}, @ref{cones}, @ref{area}, @ref{stem}, @ref{chart}, @ref{barwidth}. @sref{Bars sample}
@end deftypefn
@anchor{barh}
@deftypefnx {C function} @code{void} mgl_cont__val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_cont_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@end ifclear
-The function draws contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. If string @var{sch} have symbol @samp{#} then grid lines are drawn. If string @var{sch} have symbol @samp{t} or @samp{T} then contour labels @var{v}[k] will be drawn below (or above) the contours. See also @ref{dens}, @ref{contf}, @ref{contd}, @ref{axial}, @code{cont[xyz]}. @sref{Cont sample}
+The function draws contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. If string @var{sch} have symbol @samp{t} or @samp{T} then contour labels @var{v}[k] will be drawn below (or above) the contours. See also @ref{dens}, @ref{contf}, @ref{contd}, @ref{axial}, @code{cont[xyz]}. @sref{Cont sample}
@end deftypefn
@deftypefn {MGL command} {} cont zdat ['sch'='']
@deftypefnx {C function} @code{void} mgl_contf_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_contf_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@end ifclear
-The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). If string @var{sch} have symbol @samp{#} then grid lines are drawn. See also @ref{dens}, @ref{cont}, @ref{contd}, @code{contf[xyz]}. @sref{ContF sample}
+The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). See also @ref{dens}, @ref{cont}, @ref{contd}, @code{contf[xyz]}. @sref{ContF sample}
@end deftypefn
@deftypefn {MGL command} {} contf zdat ['sch'='']
@deftypefnx {C function} @code{void} mgl_contv_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_contv_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@end ifclear
-The function draws vertical cylinder at contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. If string @var{sch} have symbol @samp{#} then grid lines are drawn. If string @var{sch} have symbol @samp{t} or @samp{T} then contour labels @var{v}[k] will be drawn below (or above) the contours. See also @ref{cont}, @ref{contf}. @sref{ContV sample}
+The function draws vertical cylinder at contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z}=@var{v}[k] or at @var{z} = @var{Min}.z if @var{sch} contain symbol @samp{_}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. See also @ref{cont}, @ref{contf}. @sref{ContV sample}
@end deftypefn
@deftypefn {MGL command} {} contv zdat ['sch'='']
@deftypefnx {C function} @code{void} mgl_grid (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@deftypefnx {C function} @code{void} mgl_grid_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
@end ifclear
-The function draws grid lines for density plot of surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Grid is plotted for each z slice of the data. See also @ref{dens}, @ref{cont}, @ref{contf}, @ref{meshnum}.
+The function draws grid lines for density plot of surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{Min}.z. See also @ref{dens}, @ref{cont}, @ref{contf}, @ref{meshnum}.
@end deftypefn
@chapter Π―Π΄ΡΠΎ MathGL
@cindex mglGraph
+@ifset UDAV
+ΠΡΠ° Π³Π»Π°Π²Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π΄Π»Ρ 1D, 2D ΠΈ 3D ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π°Π½Π½ΡΡ
. Π‘ΡΠ΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π³ΡΠ°ΡΠΈΠΊΠ°, Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ Π΄Ρ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠ΅, ΡΡΠΈΡΡΠ°Ρ
, ΡΡΠΈΠ»ΡΡ
Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΡΠΎΡΠΌΡΠ»Π°Ρ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² @ref{General concepts}.
+@end ifset
+
@ifclear UDAV
-ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ MathGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ @strong{mglGraph}, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² @code{#include <mgl/mgl.h>}. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΎΡ 1D, 2D ΠΈ 3D ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ. ΠΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡ mglData (@pxref{Data processing}) Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ
. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠ°Ρ
, ΡΡΠΈΡΡΠ°Ρ
, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² @ref{Other classes}.
+ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ MathGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ @strong{mglGraph}, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ Π² @code{#include <mgl/mgl.h>}. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΎΡ 1D, 2D ΠΈ 3D ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ. ΠΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡ mglData (ΡΠΌ. @ref{Data processing}) Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ
. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ²Π΅ΡΠ°Ρ
, ΡΡΠΈΡΡΠ°Ρ
, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² @ref{General concepts} ΠΈ @ref{Other classes}.
@end ifclear
@menu
* Constructor::
* Graphics setup::
* Axis settings::
-* Transformation matrix::
+* Subplots and rotation::
* Export picture::
-* Primitives drawing::
+* Primitives::
* Text printing::
* Axis and Colorbar::
* Legend::
* Vector fields::
* Other plotting::
* Nonlinear fitting::
-* Data distributions::
+* Data manipulation::
* IDTF functions::
@end menu
@deftypefn {Constructor on @code{mglGraph}} {} mglGraph (@code{int} kind=@code{0}, @code{int} width=@code{600}, @code{int} height=@code{400})
@deftypefnx {Constructor on @code{mglGraph}} {} mglGraph (@code{const mglGraph &}gr)
@deftypefnx {Constructor on @code{mglGraph}} {} mglGraph (@code{HMGL} gr)
-@deftypefnx {C function} @code{HMGL} mgl_create_graph (@code{int} width, @code{int} height)
-@deftypefnx {C function} @code{HMGL} mgl_create_graph_gl ()
-Π‘ΠΎΠ·Π΄Π°Π΅Ρ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ) ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ @code{mglBase} (ΡΠΈΠΏ @code{HMGL}) Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ @var{width} ΠΈ @var{height}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{type} ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: @samp{0} -- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, @samp{1} -- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² OpenGL.
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{HMGL} mgl_create_graph (@code{int} width, @code{int} height)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{HMGL} mgl_create_graph_gl ()
+Π‘ΠΎΠ·Π΄Π°Π΅Ρ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ) ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ @code{mglBase} (ΡΠΈΠΏ @code{HMGL}) Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ @var{width} ΠΈ @var{height}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{kind} ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: @samp{0} -- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, @samp{1} -- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² OpenGL.
@end deftypefn
@deftypefnx {Destructor on @code{mglGraph}} {} ~mglGraph ()
-@deftypefnx {C function} @code{HMGL} mgl_delete_graph (@code{HMGL} gr)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{HMGL} mgl_delete_graph (@code{HMGL} gr)
Π£Π΄Π°Π»ΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° mglGraph.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{HMGL} Self ()
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{HMGL} Self ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° @code{HMGL}.
@end deftypefn
@end ifclear
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} SetPlotId (@code{const char *}id)
-ΠΠ°Π΄Π°Π΅Ρ ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΊΠ½Π΅ GLUT).
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetPlotId (@code{const char *}id)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_plotid (@code{HMGL} gr, @code{const char *}id)
+ΠΠ°Π΄Π°Π΅Ρ ΠΈΠΌΡ Π³ΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΊΠ½Π΅ FLTK).
@end deftypefn
@end ifclear
@cindex AlphaDef
@cindex TranspType
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΠΏ ΠΈ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ΅ΠΉ. ΠΠ»Π°Π²Π½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ @code{Alpha()}, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π³ΡΠ°ΡΠΈΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° @code{Alpha()} (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ mglGraphGL). Π€ΡΠ½ΠΊΡΠΈΡ @code{SetAlphaDef} ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ alpha-ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ @code{SetTransparent}. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ @code{SetTranspType} Π·Π°Π΄Π°Π΅Ρ ΡΠΈΠΏ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ. @sref{Transparent surface sample}
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΠΏ ΠΈ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ΅ΠΉ. ΠΠ»Π°Π²Π½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ @code{Alpha()}, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π³ΡΠ°ΡΠΈΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° @code{Alpha()} (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ mglGraphGL). Π€ΡΠ½ΠΊΡΠΈΡ @code{SetAlphaDef} ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ alpha-ΠΊΠ°Π½Π°Π»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ @code{SetTransparent}. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ @code{SetTranspType} Π·Π°Π΄Π°Π΅Ρ ΡΠΈΠΏ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ. @sref{Transparency and lighting}
@anchor{alpha}
@deftypefn {MGL command} {} alpha @code{[val=on]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Alpha (@code{bool} enable)
-@deftypefnx {C function} @code{void} mgl_set_alpha (@code{HMGL} gr, @code{int} enable)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Alpha (@code{bool} enable)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_alpha (@code{HMGL} gr, @code{int} enable)
@end ifclear
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π°. Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ @emph{Π²ΡΠ΅Π³ΠΎ} ΡΠΈΡΡΠ½ΠΊΠ°.
@end deftypefn
@anchor{alphadef}
@deftypefn {MGL command} {} alphadef @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetAlphaDef (@code{float} val)
-@deftypefnx {C function} @code{void} mgl_set_alpha_default (@code{HMGL} gr, @code{float} alpha)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetAlphaDef (@code{float} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_alpha_default (@code{HMGL} gr, @code{float} alpha)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π³ΡΠ°ΡΠΈΠΊΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 0.5.
@end deftypefn
@anchor{transptype}
@deftypefn {MGL command} {} transptype @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTranspType (@code{int} type)
-@deftypefnx {C function} @code{void} mgl_set_transp_type (@code{HMGL} gr, @code{int} enable)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTranspType (@code{int} type)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_transp_type (@code{HMGL} gr, @code{int} type)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΠΈΠΏ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ±ΡΡΠ½Π°Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{0}) -- "Π·Π°ΠΊΡΡΡΡΠ΅" ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΠΈΠ΄Π½Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅. ΠΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² OpenGL (mglGraphGL) Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΡ
ΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ΅ΠΉ. "Π‘ΡΠ΅ΠΊΠ»ΡΠ½Π½Π°Ρ" ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{1}) -- Π·Π°ΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΎΡΠ»Π°Π±Π»ΡΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²Π΅ΡΠ° (ΠΏΠΎ RGB ΠΊΠ°Π½Π°Π»Π°ΠΌ). "ΠΠ°ΠΌΠΏΠΎΠ²Π°Ρ" ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{2}) -- Π·Π°ΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ @code{SetAlphaDef(0.3)} ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅). @xref{Normal transparency}, @ref{Glass-like transparency}, @ref{Lamp-like transparency}.
+ΠΠ°Π΄Π°Π΅Ρ ΡΠΈΠΏ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ±ΡΡΠ½Π°Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{0}) -- "Π·Π°ΠΊΡΡΡΡΠ΅" ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΠΈΠ΄Π½Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅. ΠΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² OpenGL (mglGraphGL) Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΡ
ΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ΅ΠΉ. "Π‘ΡΠ΅ΠΊΠ»ΡΠ½Π½Π°Ρ" ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{1}) -- Π·Π°ΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΎΡΠ»Π°Π±Π»ΡΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²Π΅ΡΠ° (ΠΏΠΎ RGB ΠΊΠ°Π½Π°Π»Π°ΠΌ). "ΠΠ°ΠΌΠΏΠΎΠ²Π°Ρ" ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ (@samp{2}) -- Π·Π°ΠΊΡΡΡΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ @code{SetAlphaDef(0.3)} ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅). @sref{Types of transparency}
@end deftypefn
@c ==================================================================
@anchor{light}
@deftypefn {MGL command} {} light @code{[val=on]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{bool} Light (@code{bool} enable)
-@deftypefnx {C function} @code{void} mgl_set_light (@code{HMGL} gr, @code{int} enable)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{bool} Light (@code{bool} enable)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_light (@code{HMGL} gr, @code{int} enable)
@end ifclear
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΎ.
@end deftypefn
@deftypefn {MGL command} {} light @code{num} @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Light (@code{int} n, @code{bool} enable)
-@deftypefnx {C function} @code{void} mgl_set_light_n (@code{HMGL} gr, @code{int} n, @code{int} enable)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Light (@code{int} n, @code{bool} enable)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_light_n (@code{HMGL} gr, @code{int} n, @code{int} enable)
@end ifclear
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ @var{n}-ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ°.
@end deftypefn
-@deftypefn {MGL command} {} light @code{num xpos ypos zpos} ['col'='w' @code{br=0.5}]
+@deftypefn {MGL command} {} light @code{num xdir ydir zdir} ['col'='w' @code{br=0.5}]
+@deftypefnx {MGL command} {} light @code{num xdir ydir zdir xpos ypos zpos} ['col'='w' @code{br=0.5}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} AddLight (@code{int} n, @code{mglPoint} p, @code{char} c=@code{'w'}, @code{float} bright=@code{0.5}, @code{bool} infty=@code{true}, @code{float} ap=@code{0})
-@deftypefnx {C function} @code{void} mgl_add_light (@code{HMGL} gr, @code{int} n, @code{float} x, @code{float} y, @code{float} z, @code{char} c)
-@deftypefnx {C function} @code{void} mgl_add_light_ext (@code{HMGL} gr, @code{int} n, @code{float} x, @code{float} y, @code{float} z, @code{char} c, @code{float} bright, @code{int} infty, @code{float} ap)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} AddLight (@code{int} n, @code{mglPoint} d, @code{char} c=@code{'w'}, @code{float} bright=@code{0.5}, @code{float} ap=@code{0})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} AddLight (@code{int} n, @code{mglPoint} r, @code{mglPoint} d, @code{char} c=@code{'w'}, @code{float} bright=@code{0.5}, @code{float} ap=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_add_light (@code{HMGL} gr, @code{int} n, @code{float} dx, @code{float} dy, @code{float} dz)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_add_light_ext (@code{HMGL} gr, @code{int} n, @code{float} dx, @code{float} dy, @code{float} dz, @code{char} c, @code{float} bright, @code{float} ap)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_add_light_loc (@code{HMGL} gr, @code{int} n, @code{float} rx, @code{float} ry, @code{float} rz, @code{float} dx, @code{float} dy, @code{float} dz, @code{char} c, @code{float} bright, @code{float} ap)
@end ifclear
-ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ @var{n} Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @var{p} Ρ ΡΠ²Π΅ΡΠΎΠΌ @var{c} ΠΈ ΡΡΠΊΠΎΡΡΡΡ @var{bright}, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1]. Π€Π»Π°Π³ @var{infty}=@code{true} Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ (Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
+ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ²Π΅ΡΠ° Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ @var{n} Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @var{p} Ρ ΡΠ²Π΅ΡΠΎΠΌ @var{c} ΠΈ ΡΡΠΊΠΎΡΡΡΡ @var{bright}, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1]. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° @var{r} ΠΈ ΠΎΠ½ΠΎ Π½Π΅ NAN, ΡΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ, ΠΈΠ½Π°ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠ΄Π°Π»ΡΠ½Π½ΡΠΌ (Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
+@end deftypefn
+
+@anchor{diffuse}
+@ifclear UDAV
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetDifLight (@code{bool} enable)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_light_dif (@code{HMGL} gr, @code{int} enable)
+ΠΠ°Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΡΡΠ·Π½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ²Π΅ΡΠ°).
@end deftypefn
+@end ifclear
@anchor{ambient}
@deftypefn {MGL command} {} ambient @code{val}
@anchor{fog}
@deftypefn {MGL command} {} fog @code{val [dz=0.25]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Fog (@code{float} d, @code{float} dz=@code{0.25})
-@deftypefnx {C function} @code{void} mgl_set_fog (@code{HMGL} gr, @code{float} d, @code{float} dz)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Fog (@code{float} d, @code{float} dz=@code{0.25})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_fog (@code{HMGL} gr, @code{float} d, @code{float} dz)
@end ifclear
-ΠΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΡΠΌΠ°Π½ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅. Π’ΡΠΌΠ°Π½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ @var{dz} ΠΎΡ ΡΠΎΡΠΊΠΈ ΠΎΠ±Π·ΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡ ΡΠ°ΡΡΠ΅Ρ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²Π³Π»ΡΠ±Ρ ΠΏΠΎ Π·Π°ΠΊΠΎΠ½Ρ ~@math{1-exp(-d*z)}. ΠΠ΄Π΅ΡΡ @emph{z} -- Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° 1 Π³Π»ΡΠ±ΠΈΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ @var{d}=@code{0} ΡΠΎ ΡΡΠΌΠ°Π½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. @sref{Surface in fog sample}
+ΠΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΡΠΌΠ°Π½ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅. Π’ΡΠΌΠ°Π½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ @var{dz} ΠΎΡ ΡΠΎΡΠΊΠΈ ΠΎΠ±Π·ΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡ ΡΠ°ΡΡΠ΅Ρ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π²Π³Π»ΡΠ±Ρ ΠΏΠΎ Π·Π°ΠΊΠΎΠ½Ρ ~@math{1-exp(-d*z)}. ΠΠ΄Π΅ΡΡ @emph{z} -- Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° 1 Π³Π»ΡΠ±ΠΈΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ @var{d}=@code{0} ΡΠΎ ΡΡΠΌΠ°Π½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ. @sref{Adding fog}
@end deftypefn
@c ==================================================================
@anchor{barwidth}
@deftypefn {MGL command} {} barwidth @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetBarWidth ( @code{float} val)
-@deftypefnx {C function} @code{void} mgl_set_bar_width (@code{HMGL} gr, @code{float} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetBarWidth ( @code{float} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_bar_width (@code{HMGL} gr, @code{float} val)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π² Bars, Barh, BoxPlot (@pxref{Bars}). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.7}.
+ΠΠ°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π² Bars, Barh, BoxPlot (ΡΠΌ. @ref{Bars}). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.7}.
@end deftypefn
@anchor{marksize}
@deftypefn {MGL command} {} marksize @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetMarkSize (@code{float} val)
-@deftypefnx {C function} @code{void} mgl_set_mark_size (@code{HMGL} gr, @code{float} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetMarkSize (@code{float} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_mark_size (@code{HMGL} gr, @code{float} val)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ @ref{1D plotting}. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.02}.
@end deftypefn
@anchor{arrowsize}
@deftypefn {MGL command} {} arrowsize @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetArrowSize (@code{float} val)
-@deftypefnx {C function} @code{void} mgl_set_arrow_size (@code{HMGL} gr, @code{float} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetArrowSize (@code{float} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_arrow_size (@code{HMGL} gr, @code{float} val)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ΅Π»ΠΎΠΊ Π΄Π»Ρ @ref{1D plotting}, Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΡΠΈΠ²ΡΡ
(@pxref{Primitives drawing}). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.03}.
+ΠΠ°Π΄Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ΅Π»ΠΎΠΊ Π΄Π»Ρ @ref{1D plotting}, Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΡΠΈΠ²ΡΡ
(ΡΠΌ. @ref{Primitives drawing}). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.03}.
@end deftypefn
@anchor{meshnum}
@anchor{MeshNum}
@deftypefn {MGL command} {} meshnum @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetMeshNum (@code{int} val)
-@deftypefnx {C function} @code{void} mgl_set_meshnum (@code{HMGL} gr, @code{int} num)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetMeshNum (@code{int} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_meshnum (@code{HMGL} gr, @code{int} num)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π»ΠΈΠ½ΠΈΠΉ Π² Mesh(), Fall(), Grid() ΠΈ ΡΠΈΡΠ»ΠΎ ΡΡΡΠ΅Π»ΠΎΠΊ (ΡΡΡΠΈΡ
ΠΎΠ²) Π² Vect(), Dew() ΠΈ ΡΠΈΡΠ»ΠΎ ΡΡΠ΅Π΅ΠΊ Π² Cloud*(). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (=0) ΡΠΈΡΡΡΡΡΡ Π²ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ, ΡΡΡΠ΅Π»ΠΊΠΈ, ΡΡΠ΅ΠΉΠΊΠΈ.
@end deftypefn
@end ifclear
@cindex Cut
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π° (Π²ΡΡΠ΅Π·Π°Π½Π°) ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ(-ΡΠΌΠΈ) NAN ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈΠ»ΠΈ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Π° (Π²ΡΡΠ΅Π·Π°Π½Π°) ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ(-ΡΠΌΠΈ) NAN ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈΠ»ΠΈ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. @sref{Cutting sample}
@anchor{cut}
@deftypefn {MGL command} {} cut @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetCut (@code{bool} val)
-@deftypefnx {C function} @code{void} mgl_set_cut (@code{HMGL} gr, @code{int} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetCut (@code{bool} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_cut (@code{HMGL} gr, @code{int} val)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅Π·Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ @code{true} ΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠΎΠ΅ΡΠΈΡΡΡΡΡΡ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ.
@end deftypefn
-@float
-@image{cut, 7cm}
-@caption{ΠΠ΅Π²ΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠΈ @code{Cut=false}, ΠΏΡΠ°Π²ΡΠΉ ΠΏΡΠΈ @code{Cut=true}.}
-@end float
-
@deftypefn {MGL command} {} cut @code{x1 y1 z1 x2 y2 z2}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetCutBox (@code{mglPoint} p1, @code{mglPoint} p1)
-@deftypefnx {C function} @code{void} mgl_set_cut_box (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetCutBox (@code{mglPoint} p1, @code{mglPoint} p1)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_cut_box (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ Π³ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄Π° Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΡΠΊΠΈ Π½Π΅ ΡΠΈΡΡΡΡΡΡ. ΠΡΠ»ΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°Π²Π½Ρ), ΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΡΡΡΠΌ. @sref{CutMinMax sample}
@end deftypefn
@deftypefn {MGL command} {} cut 'cond'
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} CutOff (@code{const char *}cond)
-@deftypefnx {C function} @code{void} mgl_set_cutoff (@code{HMGL} gr, @code{const char *}cond)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} CutOff (@code{const char *}cond)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_cutoff (@code{HMGL} gr, @code{const char *}cond)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π·Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ @var{cond}. ΠΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΎΡΠΊΠΈ ΠΈΠ· ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡΠ»Ρ Π½Π΅ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ @code{""} Π΄Π»Ρ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠ±ΡΠ΅Π·Π°Π½ΠΈΡ. @sref{CutOff sample}
@end deftypefn
@anchor{font}
@deftypefn {MGL command} {} font 'fnt' [@code{val=6}]
-ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° (@pxref{Text printing}). ΠΠ½Π°ΡΠ°Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @samp{:rC} -- ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΎΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² 1.4 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @pxref{Font styles}.
+ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° (ΡΠΌ. @ref{Text printing}). ΠΠ½Π°ΡΠ°Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @samp{:rC} -- ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΎΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² 1.4 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠΌ. @ref{Font styles}.
@end deftypefn
@anchor{rotatetext}
@deftypefn {MGL command} {} rotatetext @code{val}
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRotatedText (@code{bool} val)
-@deftypefnx {C function} @code{void} mgl_set_rotated_text (@code{HMGL} gr, @code{int} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRotatedText (@code{bool} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_rotated_text (@code{HMGL} gr, @code{int} val)
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ.
@end deftypefn
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} SetFontDef (@code{const char *}fnt)
-@deftypefnx {C function} @code{void} mgl_set_font_def (@code{HMGL} gr, @code{const char *} val)
-ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΡΡΠΈΡΡΠ° (@pxref{Text printing}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @samp{rC} -- ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetFontDef (@code{const char *}fnt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_font_def (@code{HMGL} gr, @code{const char *} val)
+ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΡΡΠΈΡΡΠ° (ΡΠΌ. @ref{Text printing}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @samp{rC} -- ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ.
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetFontSize (@code{float} val)
@anchor{palette}
@deftypefn {MGL command} {} palette 'colors'
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetPalette (@code{const char *}@var{colors})
-@deftypefnx {C function} @code{void} mgl_set_palette (@code{HMGL} gr, @code{const char *}@var{colors})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetPalette (@code{const char *}@var{colors})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_palette (@code{HMGL} gr, @code{const char *}@var{colors})
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΠΏΠ°Π»ΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ²Π΅ΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{"Hbgrcmyhlnqeup"}, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ²Π΅ΡΠ°ΠΌ: ΡΠ΅ΠΌΠ½ΠΎ ΡΠ΅ΡΡΠΉ @samp{H}, ΡΠΈΠ½ΠΈΠΉ @samp{b}, Π·Π΅Π»Π΅Π½ΡΠΉ @samp{g}, ΠΊΡΠ°ΡΠ½ΡΠΉ @samp{r}, Π³ΠΎΠ»ΡΠ±ΠΎΠΉ @samp{c}, ΠΌΠ°Π»ΠΈΠ½ΠΎΠ²ΡΠΉ @samp{m}, ΠΆΠ΅Π»ΡΡΠΉ @samp{y}, ΡΠ΅ΡΡΠΉ @samp{h}, ΡΠΈΠ½Π΅-Π·Π΅Π»Π΅Π½ΡΠΉ @samp{l}, Π½Π΅Π±Π΅ΡΠ½ΠΎ-Π³ΠΎΠ»ΡΠ±ΠΎΠΉ @samp{n}, ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΠΉ @samp{q}, ΠΆΠ΅Π»ΡΠΎ-Π·Π΅Π»Π΅Π½ΡΠΉ @samp{e}, ΡΠΈΠ½Π΅-ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΉ @samp{u}, ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΉ @samp{p}. ΠΠ°Π»ΠΈΡΡΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² 1D Π³ΡΠ°ΡΠΈΠΊΠ°Ρ
(@pxref{1D plotting}) Π΄Π»Ρ ΠΊΡΠΈΠ²ΡΡ
Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ Π»ΠΈΠ½ΠΈΠΈ.
+ΠΠ°Π΄Π°Π΅Ρ ΠΏΠ°Π»ΠΈΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ²Π΅ΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{"Hbgrcmyhlnqeup"}, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ²Π΅ΡΠ°ΠΌ: ΡΠ΅ΠΌΠ½ΠΎ ΡΠ΅ΡΡΠΉ @samp{H}, ΡΠΈΠ½ΠΈΠΉ @samp{b}, Π·Π΅Π»ΡΠ½ΡΠΉ @samp{g}, ΠΊΡΠ°ΡΠ½ΡΠΉ @samp{r}, Π³ΠΎΠ»ΡΠ±ΠΎΠΉ @samp{c}, ΠΌΠ°Π»ΠΈΠ½ΠΎΠ²ΡΠΉ @samp{m}, ΠΆΡΠ»ΡΡΠΉ @samp{y}, ΡΠ΅ΡΡΠΉ @samp{h}, ΡΠΈΠ½Π΅-Π·Π΅Π»ΡΠ½ΡΠΉ @samp{l}, Π½Π΅Π±Π΅ΡΠ½ΠΎ-Π³ΠΎΠ»ΡΠ±ΠΎΠΉ @samp{n}, ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΠΉ @samp{q}, ΠΆΠ΅Π»ΡΠΎ-Π·Π΅Π»ΡΠ½ΡΠΉ @samp{e}, ΡΠΈΠ½Π΅-ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΉ @samp{u}, ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΉ @samp{p}. ΠΠ°Π»ΠΈΡΡΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² 1D Π³ΡΠ°ΡΠΈΠΊΠ°Ρ
(ΡΠΌ. @ref{1D plotting}) Π΄Π»Ρ ΠΊΡΠΈΠ²ΡΡ
Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ Π»ΠΈΠ½ΠΈΠΈ.
@end deftypefn
@c ==================================================================
@cindex SetWarn
@cindex GetWarn
-Γ\95Γ\81Γ\82Γ\8c 2 ΓΒΏΓΒ΅Γ\80ΓΒ΅ΓΒΌΓΒ΅ΓΒ½ΓΒ½Γ\8bΓΒ΅ ΓΒΏΓΒΎΓΒΊΓΒ°ΓΒ·Γ\8bΓΒ²ΓΒ°Γ\8eΓ\89ΓΒΈΓΒ΅ ΓΒ½ΓΒ°ΓΒ»ΓΒΈΓ\87ΓΒΈΓΒ΅ ΓΒΏΓ\80ΓΒ΅ΓΒ΄Γ\83ΓΒΏΓ\80ΓΒ΅ΓΒΆΓΒ΄ΓΒ΅ΓΒ½ΓΒΈΓ\8f/ΓΒΎΓ\88ΓΒΈΓΒ±ΓΒΊΓΒΈ ΓΒΏΓ\80ΓΒΈ Γ\81ΓΒΎΓΒ·ΓΒ΄ΓΒ°ΓΒ½ΓΒΈΓΒΈ ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°. Γ\9eΓΒ±Γ\8bΓ\87ΓΒ½ΓΒΎ ΓΒ²Γ\8b ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ½Γ\8b Γ\81ΓΒ±Γ\80ΓΒΎΓ\81ΓΒΈΓ\82Γ\8c ΓΒΈΓ\85 Γ\81 ΓΒΏΓΒΎΓΒΌΓΒΎΓ\89Γ\8cΓ\8e @code{SetWarn(0);} ΓΒΏΓΒ΅Γ\80ΓΒ΅ΓΒ΄ ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓΒ΅ΓΒΌ ΓΒΈ ΓΒΏΓ\80ΓΒΎΓΒ²ΓΒ΅Γ\80ΓΒΈΓ\82Γ\8c ΓΒΏΓΒ΅Γ\80ΓΒ΅ΓΒΌΓΒ΅ΓΒ½ΓΒ½Γ\83Γ\8e @var{WarnCode} Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ/ΠΎΡΠΈΠ±ΠΊΠΈ Π² MathGL Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ -- Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½.
+Γ\9eΓΒ±Γ\8bΓ\87ΓΒ½ΓΒΎ ΓΒ²Γ\8b ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ½Γ\8b Γ\81ΓΒ±Γ\80ΓΒΎΓ\81ΓΒΈΓ\82Γ\8c ΓΒΏΓ\80ΓΒΈΓΒ·ΓΒ½ΓΒ°ΓΒΊ ΓΒΎΓ\88ΓΒΈΓΒ±ΓΒΊΓΒΈ Γ\81 ΓΒΏΓΒΎΓΒΌΓΒΎΓ\89Γ\8cΓ\8e @code{SetWarn(0);} ΓΒΏΓΒ΅Γ\80ΓΒ΅ΓΒ΄ ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓΒ΅ΓΒΌ ΓΒΈ ΓΒΏΓ\80ΓΒΎΓΒ²ΓΒ΅Γ\80ΓΒΈΓ\82Γ\8c @code{GetWarnCode()} ΓΒΈΓΒ»ΓΒΈ @code{Message()} Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ. ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ/ΠΎΡΠΈΠ±ΠΊΠΈ Π² MathGL Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ -- Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½.
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetWarn (@code{int} code)
-ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ (@code{SetWarn(0);}) ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetWarn (@code{int} code, @code{const char *}info=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_warn (@code{HMGL} gr, @code{int} code, @code{const char *}info)
+ΠΠ°Π΄Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ (@code{SetWarn(0);}) ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π’Π΅ΠΊΡΡ @var{info} Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ ΠΊΠ°ΠΊ Π΅ΡΡΡ ΠΏΡΠΈ @var{code}<0.
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Message (@code{char *}buf)
-ΠΠ°Π΄Π°Π΅Ρ Π±ΡΡΠ΅Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΡΠ°Π²Π΅Π½ NULL, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ. Π Π°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 1024 Π±Π°ΠΉΡ. ΠΡΠ»ΠΈ @var{buf}[0]==0, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅Ρ.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{const char *}Message ()
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{const char *}mgl_get_mess (@code{HMGL} gr)
+ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΡΡΡΠ°Ρ, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅Ρ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} GetWarn ()
-@deftypefnx {C function} @code{int} mgl_get_warn (@code{HMGL} gr)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} GetWarnCode ()
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_get_warn_code (@code{HMGL} gr)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
@table @code
@item mglWarnNone=0
@c ==================================================================
-@node Axis settings, Transformation matrix, Graphics setup, MathGL core
+@node Axis settings, Subplots and rotation, Graphics setup, MathGL core
@section ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΎΠΌ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ 3 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΊΠΈ (@pxref{Cutting}), Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΎΡΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ.
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΎΠΌ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ 3 ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΊΠΈ (ΡΠΌ. @ref{Cutting}), Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΎΡΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ.
@menu
* Ranges (bounding box)::
-* Transformation::
+* Curved coordinates::
* Ticks::
@end menu
@c ------------------------------------------------------------------
-@node Ranges (bounding box), Transformation, , Axis settings
+@node Ranges (bounding box), Curved coordinates, , Axis settings
@subsection ΠΠ°ΡΡΡΠ°Π± ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ
@cindex CRange
@cindex XRange
@deftypefnx {MGL command} {} zrange @code{v1 v2}
@deftypefnx {MGL command} {} crange @code{v1 v2}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{float} v1, @code{float} v2)
-@deftypefnx {C function} @code{void} mgl_set_range_val (@code{HMGL} gr, @code{char} dir, @code{float} v1, @code{float} v2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{float} v1, @code{float} v2)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_range_val (@code{HMGL} gr, @code{char} dir, @code{float} v1, @code{float} v2)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ @samp{x}-,@samp{y}-,@samp{z}-,@samp{c}-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{ranges}.
@end deftypefn
-
@deftypefn {MGL command} {} xrange dat [@code{add=off}]
@deftypefnx {MGL command} {} yrange dat [@code{add=off}]
@deftypefnx {MGL command} {} zrange dat [@code{add=off}]
@deftypefnx {MGL command} {} crange dat [@code{add=off}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{const mglData &}dat, @code{bool} add=@code{false})
-@deftypefnx {C function} @code{void} mgl_set_range_dat (@code{HMGL} gr, @code{char} dir, @code{const HCDT} a, @code{int} add)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRange (@code{char} dir, @code{const mglData &}dat, @code{bool} add=@code{false})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_range_dat (@code{HMGL} gr, @code{char} dir, @code{const HCDT} a, @code{int} add)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ @samp{x}-,@samp{y}-,@samp{z}-,@samp{c}-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° @var{dat}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{add} ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ.
@end deftypefn
@anchor{ranges}
@deftypefn {MGL command} {} ranges @code{x1 x2 y1 y2 [z1=0 z2=0]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRanges (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1=@code{0}, @code{float} z2=@code{0})
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRanges (@code{mglPoint} p1, @code{mglPoint} p2)
-@deftypefnx {C function} @code{void} mgl_set_ranges (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1, @code{float} z2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRanges (@code{mglPoint} p1, @code{mglPoint} p2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRanges (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1=@code{0}, @code{float} z2=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ranges (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1, @code{float} z2)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ°Π²Π½Ρ, ΡΠΎ ΠΎΠ½ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π»Ρ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ @code{crange z1 z2}. ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΡΠ°Π²Π½Ρ [-1, 1].
@end deftypefn
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy)
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz)
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz, @code{const mglData &}cc)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetRanges (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz, @code{const mglData &}cc)
ΠΠ°Π΄Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ @samp{x}-,@samp{y}-,@samp{z}-,@samp{c}-ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{xx}, @var{yy}, @var{zz}, @var{cc} ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
@end deftypefn
@end ifclear
@anchor{origin}
@deftypefn {MGL command} {} origin @code{x0 y0 [z0=nan]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetOrigin (@code{float} x0, @code{float} y0, @code{float} z0=@code{NAN})
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetOrigin (@code{mglPoint} p0)
-@deftypefnx {C function} @code{void} mgl_set_origin (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetOrigin (@code{mglPoint} p0)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetOrigin (@code{float} x0, @code{float} y0, @code{float} z0=@code{NAN})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_origin (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΡΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ°Π²Π½ΠΎ NAN, ΡΠΎ MathGL ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΠΎ ΡΡΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
@end deftypefn
@c ------------------------------------------------------------------
-@node Transformation, Ticks, Ranges (bounding box), Axis settings
+@node Curved coordinates, Ticks, Ranges (bounding box), Axis settings
@subsection ΠΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ
@cindex Axis
@ifclear UDAV
@deftypefn {MGL command} {} axis 'fx' 'fy' ['fz'='' 'fa'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetFunc (@code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ=@code{""}, @code{const char *}EqA=@code{""})
-@deftypefnx {C function} @code{void} mgl_set_func (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ, @code{const char *}EqA)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetFunc (@code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ=@code{""}, @code{const char *}EqA=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_func (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ, @code{const char *}EqA)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π²ΠΈΡΡΡΠΈΠΌ ΠΎΡ ΡΡΠ°ΡΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @samp{x}, @samp{y}, @samp{z} ΠΈ @samp{a} ΠΈΠ»ΠΈ @samp{c} Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΠ»ΠΈΠ½Π΄ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π±ΡΠ΄Π΅Ρ @code{Axis("x*cos(y)", "x*sin(y)", "z");}. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡΠ» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΠΈΠ»ΠΈ @code{NULL}. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅Π³ΠΊΠ° Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ.Π΅.. @code{Axis("", "", "")} Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ @code{Axis("1*x", "1*y", "1*z")}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{EqA} Π·Π°Π΄Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡΠ»Ρ Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π»Ρ. @xref{Textual formulas}.
+ΠΠ°Π΄Π°Π΅Ρ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΊ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π²ΠΈΡΡΡΠΈΠΌ ΠΎΡ ΡΡΠ°ΡΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @samp{x}, @samp{y}, @samp{z} ΠΈ @samp{a} ΠΈΠ»ΠΈ @samp{c} Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΠ»ΠΈΠ½Π΄ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π±ΡΠ΄Π΅Ρ @code{SetFunc("x*cos(y)", "x*sin(y)", "z");}. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡΠ» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΠΈΠ»ΠΈ @code{NULL}. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌΡΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅Π³ΠΊΠ° Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{EqA} Π·Π°Π΄Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡΠ»Ρ Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π»Ρ. @xref{Textual formulas}.
@end deftypefn
@deftypefn {MGL command} {} axis @code{how}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetCoor (@code{int} how)
-@deftypefnx {C function} @code{void} mgl_set_coor (@code{HMGL} gr, @code{int} how)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetCoor (@code{int} how)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_coor (@code{HMGL} gr, @code{int} how)
@end ifclear
-Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{how}: @code{mglCartesian=0} -- Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° (Π½Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠ°Ρ); @code{mglPolar=1} -- ΠΏΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @code{mglSpherical=2} -- ΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @code{mglParabolic=3} -- ΠΏΠ°ΡΠ°Π±ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @code{mglParaboloidal=4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @code{mglOblate=5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @code{mglProlate=6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @code{mglElliptic=7} -- ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @code{mglToroidal=8} -- ΡΠΎΡΠΎΠΈΠ΄Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)), y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y))}; @code{mglBispherical=9} -- Π±ΠΈΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sin(y)*cos(z)/(cosh(x)-cos(y)), y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y))}; @code{mglBipolar=10} -- Π±ΠΈΠΏΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
+Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{how}: @code{mglCartesian=0} -- Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° (Π½Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠ°Ρ); @code{mglPolar=1} -- ΠΏΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @code{mglSpherical=2} -- ΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @code{mglParabolic=3} -- ΠΏΠ°ΡΠ°Π±ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @code{mglParaboloidal=4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @code{mglOblate=5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @code{mglProlate=6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @code{mglElliptic=7} -- ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @code{mglToroidal=8} -- ΡΠΎΡΠΎΠΈΠ΄Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)), y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y))}; @code{mglBispherical=9} -- Π±ΠΈΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sin(y)*cos(z)/(cosh(x)-cos(y)), y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y))}; @code{mglBipolar=10} -- Π±ΠΈΠΏΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}; @code{mglLogLog=11} -- log-log ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=lg(x), y_n=lg(y), z_n=lg(z)}; @code{mglLogX=12} -- log-x ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=lg(x), y_n=y, z_n=z}; @code{mglLogY=13} -- log-y ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @math{x_n=x, y_n=lg(y), z_n=z}.
@end deftypefn
@anchor{ternary}
@deftypefn {MGL command} {} ternary @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Ternary (@code{bool} tern)
-@deftypefnx {C function} @code{void} mgl_set_ternary (@code{HMGL} gr, @code{int} tern)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Ternary (@code{int} tern)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ternary (@code{HMGL} gr, @code{int} tern)
@end ifclear
-Γ\97ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\80ΓΒΈΓ\81ΓΒΎΓΒ²ΓΒ°ΓΒ½ΓΒΈΓΒ΅ Γ\82Γ\80ΓΒ΅Γ\83ΓΒ³ΓΒΎΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 (Ternary) ΓΒΎΓ\81ΓΒ΅ΓΒΉ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82. ΓΒΓ\82ΓΒΎ Γ\81ΓΒΏΓΒ΅Γ\86ΓΒΈΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓΒΉ Γ\82ΓΒΈΓΒΏ ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ° ΓΒ΄ΓΒ»Γ\8f 3 ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓ\85 ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82 (ΓΒΊΓΒΎΓΒΌΓΒΏΓΒΎΓΒ½ΓΒ΅ΓΒ½Γ\82) @var{a}, @var{b}, @var{c} Γ\82ΓΒ°ΓΒΊΓΒΈΓ\85, Γ\87Γ\82ΓΒΎ @var{a}+@var{b}+@var{c}=1. MathGL ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82 Γ\82ΓΒΎΓΒ»Γ\8cΓΒΊΓΒΎ 2 ΓΒ½ΓΒ΅ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓΒ΅ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b @var{a}=x ΓΒΈ @var{b}=y ΓΒΏΓΒΎΓ\81ΓΒΊΓΒΎΓΒ»Γ\8cΓΒΊΓ\83 ΓΒΈΓ\85 ΓΒ΄ΓΒΎΓ\81Γ\82ΓΒ°Γ\82ΓΒΎΓ\87ΓΒ½ΓΒΎ ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ²Γ\81ΓΒ΅Γ\85 ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒΎΓΒ². Γ\9fΓ\80ΓΒΈ Γ\8dΓ\82ΓΒΎΓΒΌ Γ\82Γ\80ΓΒ΅Γ\82Γ\8cΓ\8f ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82ΓΒ° z Γ\8fΓΒ²ΓΒ»Γ\8fΓΒ΅Γ\82Γ\81Γ\8f ΓΒ½ΓΒ΅ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓΒΌ ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80ΓΒΎΓΒΌ ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ»ΓΒΈΓΒ½ΓΒΈΓΒΉ Γ\83Γ\80ΓΒΎΓΒ²ΓΒ½Γ\8f, ΓΒΏΓΒΎΓΒ²ΓΒ΅Γ\80Γ\85ΓΒ½ΓΒΎΓ\81Γ\82ΓΒ΅ΓΒΉ ΓΒΈ Γ\82.ΓΒ΄. @sref{Ternary plot sample}
+Γ\97ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\80ΓΒΈΓ\81ΓΒΎΓΒ²ΓΒ°ΓΒ½ΓΒΈΓΒ΅ Γ\82Γ\80ΓΒ΅Γ\83ΓΒ³ΓΒΎΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 (Ternary) ΓΒΈΓΒ»ΓΒΈ ΓΒΏΓΒΈΓ\80ΓΒ°ΓΒΌΓΒΈΓΒ΄ΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 (Quaternary) ΓΒΎΓ\81ΓΒ΅ΓΒΉ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82. ΓΒΓ\82ΓΒΎ Γ\81ΓΒΏΓΒ΅Γ\86ΓΒΈΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓΒΉ Γ\82ΓΒΈΓΒΏ ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ° ΓΒ΄ΓΒ»Γ\8f 3 ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓ\85 ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82 (ΓΒΊΓΒΎΓΒΌΓΒΏΓΒΎΓΒ½ΓΒ΅ΓΒ½Γ\82) @var{a}, @var{b}, @var{c} Γ\82ΓΒ°ΓΒΊΓΒΈΓ\85, Γ\87Γ\82ΓΒΎ @var{a}+@var{b}+@var{c}=1. MathGL ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82 Γ\82ΓΒΎΓΒ»Γ\8cΓΒΊΓΒΎ 2 ΓΒ½ΓΒ΅ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓΒ΅ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b @var{a}=x ΓΒΈ @var{b}=y ΓΒΏΓΒΎΓ\81ΓΒΊΓΒΎΓΒ»Γ\8cΓΒΊΓ\83 ΓΒΈΓ\85 ΓΒ΄ΓΒΎΓ\81Γ\82ΓΒ°Γ\82ΓΒΎΓ\87ΓΒ½ΓΒΎ ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ²Γ\81ΓΒ΅Γ\85 ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒΎΓΒ². Γ\9fΓ\80ΓΒΈ Γ\8dΓ\82ΓΒΎΓΒΌ Γ\82Γ\80ΓΒ΅Γ\82Γ\8cΓ\8f ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82ΓΒ° z Γ\8fΓΒ²ΓΒ»Γ\8fΓΒ΅Γ\82Γ\81Γ\8f ΓΒ½ΓΒ΅ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓΒΌ ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80ΓΒΎΓΒΌ ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ»ΓΒΈΓΒ½ΓΒΈΓΒΉ Γ\83Γ\80ΓΒΎΓΒ²ΓΒ½Γ\8f, ΓΒΏΓΒΎΓΒ²ΓΒ΅Γ\80Γ\85ΓΒ½ΓΒΎΓ\81Γ\82ΓΒ΅ΓΒΉ ΓΒΈ Γ\82.ΓΒ΄. ΓΒ‘ΓΒΎΓΒΎΓ\82ΓΒ²ΓΒ΅Γ\82Γ\81Γ\82ΓΒ²ΓΒ΅ΓΒ½ΓΒ½ΓΒΎ Quaternary ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b -- 4 ΓΒ½ΓΒ΅ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81ΓΒΈΓΒΌΓ\8bΓΒ΅ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b @var{a}, @var{b}, @var{c} ΓΒΈ @var{d}, Γ\82ΓΒ°ΓΒΊΓΒΈΓΒ΅ Γ\87Γ\82ΓΒΎ @var{a}+@var{b}+@var{c}+@var{d}=1. Γ\98Γ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒΉΓ\82ΓΒ΅ @code{Ternary(0)}. @sref{Ternary axis}
@end deftypefn
@c ------------------------------------------------------------------
-@node Ticks, , Transformation, Axis settings
+@node Ticks, , Curved coordinates, Axis settings
@subsection ΠΠ΅ΡΠΊΠΈ ΠΎΡΠ΅ΠΉ
@cindex AxisStl
@cindex TickLen
@cindex SetTickSkip
@end ifclear
-@anchor{ticklen}
-@deftypefn {MGL command} {} ticklen @code{val} [@code{stt=1}]
-@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTickLen (@code{float} val, @code{float} stt=@code{1})
-@deftypefnx {C function} @code{void} mgl_set_tick_len (@code{HMGL} gr, @code{float} val, @code{float} stt)
-@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.1}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{stt}>0 Π·Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² @code{sqrt(1+stt)} ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅.
-@end deftypefn
-
-@deftypefn {MGL command} {} axisstl 'stl' ['tck'='' 'sub'='']
-@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetAxisStl (@code{const char *}stl=@code{"k"}, @code{const char *}tck=@code{0}, @code{const char *}sub=@code{0})
-@deftypefnx {C function} @code{void} mgl_set_axis_stl (@code{HMGL} gr, @code{const char *}stl, @code{const char *}tck, @code{const char *}sub)
-@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΠΎΡΠ΅ΠΉ (@var{stl}), ΠΌΠ΅ΡΠΎΠΊ (@var{tck}) ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ (@var{sub}) ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ @var{stl} ΠΏΡΡΡΠ°Ρ ΠΈΠ»ΠΈ Π½ΠΎΠ»Ρ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@samp{k} ΠΈΠ»ΠΈ @samp{w} Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ). ΠΡΠ»ΠΈ @var{tck}, @var{sub} ΠΏΡΡΡΠ°Ρ ΠΈΠ»ΠΈ Π½ΠΎΠ»Ρ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»Ρ ΠΎΡΠ΅ΠΉ (Ρ.Π΅. @var{stl}).
-@end deftypefn
-
@anchor{adjust}
@deftypefn {MGL command} {} adjust ['dir'='xyzc']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Adjust (@code{const char *}dir=@code{"xyz"})
-@deftypefnx {C function} @code{void} mgl_adjust_ticks (@code{HMGL} gr, @code{const char *}dir)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Adjust (@code{const char *}dir=@code{"xyzc"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_adjust_ticks (@code{HMGL} gr, @code{const char *}dir)
@end ifclear
-ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π΅Ρ ΡΠ°Π³ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ, ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠΊ Π΄Π»Ρ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @var{dir} Π² Π²ΠΈΠ΄Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ @code{SetTuneTicks(true)}.
+ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π΅Ρ ΡΠ°Π³ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ, ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠΊ Π΄Π»Ρ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @var{dir} Π² Π²ΠΈΠ΄Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ @code{SetTuneTicks(true)}. ΠΠ±ΡΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΡΠΎΠΌΠ΅ ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
@end deftypefn
@anchor{xtick}
@deftypefnx {MGL command} {} ztick @code{val [sub=0 org=nan]}
@deftypefnx {MGL command} {} ctick @code{val [sub=0 org=nan]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTicks (@code{char} dir, @code{float} d=@code{0}, @code{int} ns=@code{0}, @code{float} org=@code{NAN})
-@deftypefnx {C function} @code{void} mgl_set_ticks_dir (@code{HMGL} gr, @code{char} dir, @code{float} d, @code{int} ns, @code{float} org)
-@deftypefnx {C function} @code{void} mgl_set_ticks(@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} nz)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicks (@code{char} dir, @code{float} d=@code{0}, @code{int} ns=@code{0}, @code{float} org=@code{NAN})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_dir (@code{HMGL} gr, @code{char} dir, @code{float} d, @code{int} ns, @code{float} org)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} nz)
@end ifclear
-Γ\97ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\88ΓΒ°ΓΒ³ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ ΓΒΎΓ\81ΓΒ΅ΓΒΉ @var{d}, Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎ ΓΒΏΓΒΎΓΒ΄ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ @var{ns} ΓΒΈ ΓΒ½ΓΒ°Γ\87ΓΒ°ΓΒ»Γ\8cΓΒ½ΓΒΎΓΒ΅ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ @var{org} ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓ\81ΓΒΈ ΓΒ²ΓΒ΄ΓΒΎΓΒ»Γ\8c ΓΒ½ΓΒ°ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒ»ΓΒ΅ΓΒ½ΓΒΈΓ\8f @var{dir} (ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒΉΓ\82ΓΒ΅ 'c' ΓΒ΄ΓΒ»Γ\8f ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ colorbar). Γ\9fΓΒ΅Γ\80ΓΒ΅ΓΒΌΓΒ΅ΓΒ½ΓΒ½ΓΒ°Γ\8f @var{d} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\88ΓΒ°ΓΒ³ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ (ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒ°) ΓΒΈΓΒ»ΓΒΈ ΓΒΈΓ\85 Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎ ΓΒ½ΓΒ° ΓΒΎΓ\81ΓΒΈ (ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΎΓ\82Γ\80ΓΒΈΓ\86ΓΒ°Γ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒ°). Γ\9dΓ\83ΓΒ»ΓΒ΅ΓΒ²ΓΒΎΓΒ΅ ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒ΅ ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 ΓΒ»ΓΒΎΓΒ³ΓΒ°Γ\80ΓΒΈΓ\84ΓΒΌΓΒΈΓ\87ΓΒ΅Γ\81ΓΒΊΓΒΈΓΒ΅ ΓΒΌΓΒ΅Γ\82ΓΒΊΓΒΈ. ΠΡΠ»ΠΈ @var{org}=@code{NAN}, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{Org}.
+Γ\97ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\88ΓΒ°ΓΒ³ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ ΓΒΎΓ\81ΓΒ΅ΓΒΉ @var{d}, Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎ ΓΒΏΓΒΎΓΒ΄ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ @var{ns} ΓΒΈ ΓΒ½ΓΒ°Γ\87ΓΒ°ΓΒ»Γ\8cΓΒ½ΓΒΎΓΒ΅ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ @var{org} ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓ\81ΓΒΈ ΓΒ²ΓΒ΄ΓΒΎΓΒ»Γ\8c ΓΒ½ΓΒ°ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒ»ΓΒ΅ΓΒ½ΓΒΈΓ\8f @var{dir} (ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒΉΓ\82ΓΒ΅ 'c' ΓΒ΄ΓΒ»Γ\8f ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ colorbar). Γ\9fΓΒ΅Γ\80ΓΒ΅ΓΒΌΓΒ΅ΓΒ½ΓΒ½ΓΒ°Γ\8f @var{d} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\88ΓΒ°ΓΒ³ ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ (ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒ°) ΓΒΈΓΒ»ΓΒΈ ΓΒΈΓ\85 Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎ ΓΒ½ΓΒ° ΓΒΎΓ\81ΓΒΈ (ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΎΓ\82Γ\80ΓΒΈΓ\86ΓΒ°Γ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒ°). Γ\9dΓ\83ΓΒ»ΓΒ΅ΓΒ²ΓΒΎΓΒ΅ ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒ΅ ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 ΓΒ°ΓΒ²Γ\82ΓΒΎΓΒΌΓΒ°Γ\82ΓΒΈΓ\87ΓΒ΅Γ\81ΓΒΊΓ\83Γ\8e Γ\80ΓΒ°Γ\81Γ\81Γ\82ΓΒ°ΓΒ½ΓΒΎΓΒ²ΓΒΊΓ\83 ΓΒΌΓΒ΅Γ\82ΓΒΎΓΒΊ. ΠΡΠ»ΠΈ @var{org}=@code{NAN}, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{Org}.
@end deftypefn
@deftypefn {MGL command} {} xtick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
@deftypefnx {MGL command} {} ytick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
@deftypefnx {MGL command} {} ztick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const char *}lbl, @code{bool} add=@code{false})
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const wchar_t *}lbl, @code{bool} add=@code{false})
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const mglData &}val, @code{const char *}lbl, @code{bool} add=@code{false})
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const mglData &}val, @code{const wchar_t *}lbl, @code{bool} add=@code{false})
-@deftypefnx {C function} @code{void} mgl_set_ticks_str (@code{HMGL} gr, @code{char} dir, @code{const char *}lbl, @code{bool} add)
-@deftypefnx {C function} @code{void} mgl_set_ticks_wcs (@code{HMGL} gr, @code{char} dir, @code{const wchar_t *}lbl, @code{bool} add)
-@deftypefnx {C function} @code{void} mgl_set_ticks_val (@code{HMGL} gr, @code{char} dir, @code{HCDT} val, @code{const char *}lbl, @code{bool} add)
-@deftypefnx {C function} @code{void} mgl_set_ticks_valw (@code{HMGL} gr, @code{char} dir, @code{HCDT} val, @code{const wchar_t *}lbl, @code{bool} add)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const char *}lbl, @code{bool} add=@code{false})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const wchar_t *}lbl, @code{bool} add=@code{false})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const mglData &}val, @code{const char *}lbl, @code{bool} add=@code{false})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicksVal (@code{char} dir, @code{const mglData &}val, @code{const wchar_t *}lbl, @code{bool} add=@code{false})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_str (@code{HMGL} gr, @code{char} dir, @code{const char *}lbl, @code{bool} add)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_wcs (@code{HMGL} gr, @code{char} dir, @code{const wchar_t *}lbl, @code{bool} add)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_val (@code{HMGL} gr, @code{char} dir, @code{HCDT} val, @code{const char *}lbl, @code{bool} add)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_valw (@code{HMGL} gr, @code{char} dir, @code{HCDT} val, @code{const wchar_t *}lbl, @code{bool} add)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @var{val} ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ @var{lbl} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ @var{dir}. ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{val} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π²Π½ΠΎΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x]. ΠΠ΅ΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ @samp{\n}. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ @code{SetTicks()} Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠΊ. @sref{Manual ticks sample}
+ΠΠ°Π΄Π°Π΅Ρ ΡΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @var{val} ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ @var{lbl} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ @var{dir}. ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{val} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x]. ΠΠ΅ΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ @samp{\n}. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ @code{SetTicks()} Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠΊ.
@end deftypefn
@deftypefn {MGL command} {} xtick 'templ'
@deftypefnx {MGL command} {} ztick 'templ'
@deftypefnx {MGL command} {} ctick 'templ'
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTickTempl (@code{char} dir, @code{const char *}templ)
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTickTempl (@code{char} dir, @code{const wchar_t *}templ)
-@deftypefnx {C function} @code{void} mgl_set_tick_templ (@code{HMGL} gr, @code{const char *}templ)
-@deftypefnx {C function} @code{void} mgl_set_tick_templw (@code{HMGL} gr, @code{const wchar_t *}templ)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTickTempl (@code{char} dir, @code{const char *}templ)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTickTempl (@code{char} dir, @code{const wchar_t *}templ)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_tick_templ (@code{HMGL} gr, @code{const char *}templ)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_tick_templw (@code{HMGL} gr, @code{const wchar_t *}templ)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½ @var{templ} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ x-,y-,z-ΠΎΡΠΈ ΠΈΠ»ΠΈ colorbar. Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ TeX. ΠΡΠ»ΠΈ @var{templ}=@code{""}, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ @samp{%.2g}). Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½Π° Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ΠΌΠ΅ΡΠΎΠΊ (Π‘ΠΌ. @code{SetTuneTicks()}).
+ΠΠ°Π΄Π°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½ @var{templ} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ x-,y-,z-ΠΎΡΠΈ ΠΈΠ»ΠΈ colorbar. Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ TeX. ΠΡΠ»ΠΈ @var{templ}=@code{""}, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ @samp{%.2g}). Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°Π±Π»ΠΎΠ½Π° Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ΠΌΠ΅ΡΠΎΠΊ.
@end deftypefn
-@deftypefn {MGL command} {} xtick val 'templ'
-@deftypefnx {MGL command} {} ytick val 'templ'
-@deftypefnx {MGL command} {} ztick val 'templ'
-@deftypefnx {MGL command} {} ctick val 'templ'
+@deftypefn {MGL command} {} ticktime 'dir' [@code{dv} 'tmpl']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetTickTime (@code{char} dir, @code{float} val, @code{const char *}templ)
-@deftypefnx {C function} @code{void} mgl_set_tick_time (@code{HMGL} gr, @code{float} val, @code{const char *}templ)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTicksTime (@code{char} dir, @code{float} val, @code{const char *}templ)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_ticks_time (@code{HMGL} gr, @code{float} val, @code{const char *}templ)
@end ifclear
-ΠΠ°Π΄Π°Π΅Ρ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΠ°Π³ΠΎΠΌ @var{val} ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ @var{templ} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ x-,y-,z-ΠΎΡΠΈ ΠΈΠ»ΠΈ colorbar. Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ TeX.
+ΠΠ°Π΄Π°Π΅Ρ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΠ°Π³ΠΎΠΌ @var{val} ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ @var{templ} Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ Π²Π΄ΠΎΠ»Ρ x-,y-,z-ΠΎΡΠΈ ΠΈΠ»ΠΈ colorbar. Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ TeX. Π€ΠΎΡΠΌΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½Π° @var{templ} ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ @url{http://www.manpagez.com/man/3/strftime/}. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ: @samp{%X} Π΄Π»Ρ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, @samp{%x} Π΄Π»Ρ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°ΡΡ, @samp{%Y} Π΄Π»Ρ Π³ΠΎΠ΄Π° Ρ ΡΠΈΡΡΠ°ΠΌΠΈ ΡΡΠΎΠ»Π΅ΡΠΈΡ. ΠΡΠ»ΠΈ @var{val}=0 ΠΈ/ΠΈΠ»ΠΈ @var{templ}="", ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ΅ΡΠΎΠΊ ΠΈ/ΠΈΠ»ΠΈ Π²ΡΠ±ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½Π°.
@end deftypefn
+@deftypefn {MGL command} {} tuneticks @code{val} [@code{pos=1.15}]
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} SetTuneTicks (@code{bool} tune, @code{float} pos=@code{1.15})
-@deftypefnx {C function} @code{void} mgl_tune_ticks (@code{HMGL} gr, @code{bool} tune, @code{float} pos)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTuneTicks (@code{int} tune, @code{float} pos=@code{1.15})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tune_ticks (@code{HMGL} gr, @code{int} tune, @code{float} pos)
+@end ifclear
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ½Π΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ (Π΄Π»Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ
, ΡΠΈΠΏΠ° 0.001...0.002, ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΈΡ
, ΡΠΈΠΏΠ° 1000...2000, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ) ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Π΄Π»Ρ ΡΠ·ΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΡΠΈΠΏΠ° 0.999...1.000). Π’Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @var{pos} ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ Π½Π° ΠΎΡΠΈ: =0 ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, =1 ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} SetTickRotate (@code{bool} val)
-@deftypefnx {C function} @code{void} mgl_set_tick_rotate (@code{HMGL} gr, @code{bool} val)
+@ifclear UDAV
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTickRotate (@code{bool} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_tick_rotate (@code{HMGL} gr, @code{bool} val)
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΌΠ΅ΡΠΎΠΊ Π΅ΡΠ»ΠΈ ΠΈΡ
ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΠΌΠ΅ΡΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΈ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} SetTickSkip (@code{bool} val)
-@deftypefnx {C function} @code{void} mgl_set_tick_skip (@code{HMGL} gr, @code{bool} val)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTickSkip (@code{bool} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_tick_skip (@code{HMGL} gr, @code{bool} val)
ΠΠΊΠ»ΡΡΠ°Π΅Ρ/Π²ΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊ ΠΌΠ΅ΡΠΎΠΊ Π΅ΡΠ»ΠΈ ΠΈΡ
ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΠΌΠ΅ΡΠΎΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π΅Π»ΠΈΠΊΠΈ.
@end deftypefn
@end ifclear
+@anchor{ticklen}
+@deftypefn {MGL command} {} ticklen @code{val} [@code{stt=1}]
+@ifclear UDAV
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetTickLen (@code{float} val, @code{float} stt=@code{1})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_tick_len (@code{HMGL} gr, @code{float} val, @code{float} stt)
+@end ifclear
+ΠΠ°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @code{0.1}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{stt}>0 Π·Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² @code{sqrt(1+stt)} ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅.
+@end deftypefn
+
+@deftypefn {MGL command} {} axisstl 'stl' ['tck'='' 'sub'='']
+@ifclear UDAV
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetAxisStl (@code{const char *}stl=@code{"k"}, @code{const char *}tck=@code{0}, @code{const char *}sub=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_axis_stl (@code{HMGL} gr, @code{const char *}stl, @code{const char *}tck, @code{const char *}sub)
+@end ifclear
+ΠΠ°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΠΎΡΠ΅ΠΉ (@var{stl}), ΠΌΠ΅ΡΠΎΠΊ (@var{tck}) ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅ΡΠΎΠΊ (@var{sub}) ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ @var{stl} ΠΏΡΡΡΠ°Ρ ΠΈΠ»ΠΈ Π½ΠΎΠ»Ρ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@samp{k} ΠΈΠ»ΠΈ @samp{w} Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ). ΠΡΠ»ΠΈ @var{tck}, @var{sub} ΠΏΡΡΡΠ°Ρ ΠΈΠ»ΠΈ Π½ΠΎΠ»Ρ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΠ»Ρ ΠΎΡΠ΅ΠΉ (Ρ.Π΅. @var{stl}).
+@end deftypefn
+
@c ##################################################################
-@node Transformation matrix, Export picture, Axis settings, MathGL core
+@node Subplots and rotation, Export picture, Axis settings, MathGL core
@section ΠΠ°ΡΡΠΈΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
@cindex Aspect
@cindex Rotate
@cindex Push
@cindex Pop
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π³ΡΠ°ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SubPlot() ΠΈΠ»ΠΈ InPlot() Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠΎΡΠ»Π΅ Π½ΠΈΡ
-- ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Rotate() ΠΈ ΡΠΆΠ°ΡΠΈΡ Aspect(). Π Π½Π°ΠΊΠΎΠ½Π΅Ρ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠΌΠ΅ΡΡΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ColumnPlot() Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π² ΡΡΠΎΠ»Π±Π΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌ Π±Π΅Π· Π·Π°Π·ΠΎΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΡΠΌΠΈ.
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π³ΡΠ°ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SubPlot() ΠΈΠ»ΠΈ InPlot() Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠΎΡΠ»Π΅ Π½ΠΈΡ
-- ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Rotate() ΠΈ ΡΠΆΠ°ΡΠΈΡ Aspect(). Π Π½Π°ΠΊΠΎΠ½Π΅Ρ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠΌΠ΅ΡΡΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ColumnPlot() Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π² ΡΡΠΎΠ»Π±Π΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌ Π±Π΅Π· Π·Π°Π·ΠΎΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΡΠΌΠΈ. @sref{Subplots}
@anchor{subplot}
-@deftypefn {MGL command} {} subplot @code{nx ny m [dx=0 dy=0]}
-@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SubPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{float} dx=@code{0}, @code{float} dy=@code{0})
-@deftypefnx {C function} @code{void} mgl_subplot (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m)
-@deftypefnx {C function} @code{void} mgl_subplot_d (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{float} dx, @code{float} dy)
-@end ifclear
-ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² @var{m}-ΡΡ ΡΡΠ΅ΠΉΠΊΡ ΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{nx}*@var{ny} ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎΠ²ΠΎΡΠΎΡΡ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°". Π‘ ΡΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ (ΠΈΠ»ΠΈ Π½Π΅ ΠΊΡΠ°ΡΠ½ΡΠΌΠΈ) ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠΊΠΈ. Π―ΡΠ΅ΠΉΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ @var{dx}, @var{dy}.
-@end deftypefn
-
-@deftypefn {MGL command} {} subplot @code{nx ny m} 'style'
+@deftypefn {MGL command} {} subplot @code{nx ny m ['stl'='<>_^' dx=0 dy=0]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SubPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
-@deftypefnx {C function} @code{void} mgl_subplot_s (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SubPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{const char *}stl=@code{"<>_^"}, @code{float} dx=@code{0}, @code{float} dy=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_subplot (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{const char *}stl)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_subplot_d (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{const char *}stl, @code{float} dx, @code{float} dy)
@end ifclear
-Γ\90ΓΒ½ΓΒ°ΓΒ»ΓΒΎΓΒ³ΓΒΈΓ\87ΓΒ½ΓΒΎ ΓΒΏΓ\80ΓΒ΅ΓΒ΄Γ\8bΓΒ΄Γ\83Γ\89ΓΒ΅ΓΒΌΓ\83, ΓΒ½ΓΒΎ ΓΒΌΓΒ΅Γ\81Γ\82ΓΒΎ ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓ\81ΓΒ΅ΓΒΉ/colorbar Γ\80ΓΒ΅ΓΒ·ΓΒ΅Γ\80ΓΒ²ΓΒΈΓ\80Γ\83ΓΒ΅Γ\82Γ\81Γ\8f Γ\82ΓΒΎΓΒ»Γ\8cΓΒΊΓΒΎ ΓΒ΅Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° @var{style} Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82: @samp{L} ΓΒΈΓΒ»ΓΒΈ @samp{<} -- Γ\81 ΓΒ»ΓΒ΅ΓΒ²ΓΒΎΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{R} ΓΒΈΓΒ»ΓΒΈ @samp{>} -- Γ\81 ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒΎΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{A} ΓΒΈΓΒ»ΓΒΈ @samp{^} -- Γ\81 ΓΒ²ΓΒ΅Γ\80Γ\85ΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{U} ΓΒΈΓΒ»ΓΒΈ @samp{_} -- Γ\81 ΓΒ½ΓΒΈΓΒΆΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f.
+Γ\9fΓΒΎΓΒΌΓΒ΅Γ\89ΓΒ°ΓΒ΅Γ\82 ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄Γ\83Γ\8eΓ\89ΓΒΈΓΒΉ ΓΒ²Γ\8bΓΒ²ΓΒΎΓΒ΄ ΓΒ² @var{m}-Γ\83Γ\8e Γ\8fΓ\87ΓΒ΅ΓΒΉΓΒΊΓ\83 Γ\81ΓΒ΅Γ\82ΓΒΊΓΒΈ Γ\80ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80ΓΒΎΓΒΌ @var{nx}*@var{ny} ΓΒΎΓ\82 ΓΒ²Γ\81ΓΒ΅ΓΒ³ΓΒΎ Γ\80ΓΒΈΓ\81Γ\83ΓΒ½ΓΒΊΓΒ°. ΓΒ€Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓ\8f Γ\81ΓΒ±Γ\80ΓΒ°Γ\81Γ\8bΓΒ²ΓΒ°ΓΒ΅Γ\82 ΓΒΌΓΒ°Γ\82Γ\80ΓΒΈΓ\86Γ\83 Γ\82Γ\80ΓΒ°ΓΒ½Γ\81Γ\84ΓΒΎΓ\80ΓΒΌΓΒ°Γ\86ΓΒΈΓΒΈ (ΓΒΏΓΒΎΓΒ²ΓΒΎΓ\80ΓΒΎΓ\82Γ\8b ΓΒΈ Γ\81ΓΒΆΓΒ°Γ\82ΓΒΈΓΒ΅ ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°) ΓΒΈ ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ½ΓΒ° ΓΒ²Γ\8bΓΒ·Γ\8bΓΒ²ΓΒ°Γ\82Γ\8cΓ\81Γ\8f ΓΒΏΓΒ΅Γ\80ΓΒ²ΓΒΎΓΒΉ ΓΒ΄ΓΒ»Γ\8f Γ\81ΓΒΎΓΒ·ΓΒ΄ΓΒ°ΓΒ½ΓΒΈΓ\8f "ΓΒΏΓΒΎΓΒ΄ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°". ΓΒ‘ Γ\8dΓ\81Γ\82ΓΒ΅Γ\82ΓΒΈΓ\87ΓΒ΅Γ\81ΓΒΊΓΒΎΓΒΉ Γ\82ΓΒΎΓ\87ΓΒΊΓΒΈ ΓΒ·Γ\80ΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ½ΓΒ΅ Γ\80ΓΒ΅ΓΒΊΓΒΎΓΒΌΓΒ΅ΓΒ½ΓΒ΄Γ\83ΓΒ΅Γ\82Γ\81Γ\8f ΓΒ²Γ\8bΓΒ·Γ\8bΓΒ²ΓΒ°Γ\82Γ\8c Γ\8dΓ\82Γ\83 Γ\84Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓ\8e Γ\81 Γ\80ΓΒ°ΓΒ·ΓΒ»ΓΒΈΓ\87ΓΒ½Γ\8bΓΒΌΓΒΈ (ΓΒΈΓΒ»ΓΒΈ ΓΒ½ΓΒ΅ ΓΒΊΓ\80ΓΒ°Γ\82ΓΒ½Γ\8bΓΒΌΓΒΈ) Γ\80ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80ΓΒ°ΓΒΌΓΒΈ Γ\81ΓΒ΅Γ\82ΓΒΊΓΒΈ. Γ\9cΓΒ΅Γ\81Γ\82ΓΒΎ ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓ\81ΓΒ΅ΓΒΉ/colorbar Γ\80ΓΒ΅ΓΒ·ΓΒ΅Γ\80ΓΒ²ΓΒΈΓ\80Γ\83ΓΒ΅Γ\82Γ\81Γ\8f Γ\82ΓΒΎΓΒ»Γ\8cΓΒΊΓΒΎ ΓΒ΅Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° @var{style} Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82: @samp{L} ΓΒΈΓΒ»ΓΒΈ @samp{<} -- Γ\81 ΓΒ»ΓΒ΅ΓΒ²ΓΒΎΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{R} ΓΒΈΓΒ»ΓΒΈ @samp{>} -- Γ\81 ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒΎΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{A} ΓΒΈΓΒ»ΓΒΈ @samp{^} -- Γ\81 ΓΒ²ΓΒ΅Γ\80Γ\85ΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f, @samp{U} ΓΒΈΓΒ»ΓΒΈ @samp{_} -- Γ\81 ΓΒ½ΓΒΈΓΒΆΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒΊΓ\80ΓΒ°Γ\8f. ΓΒ―Γ\87ΓΒ΅ΓΒΉΓΒΊΓΒ° ΓΒΌΓΒΎΓΒΆΓΒ΅Γ\82 ΓΒ±Γ\8bΓ\82Γ\8c ΓΒ΄ΓΒΎΓΒΏΓΒΎΓΒ»ΓΒ½ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ Γ\81ΓΒ΄ΓΒ²ΓΒΈΓΒ½Γ\83Γ\82ΓΒ° ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ Γ\81ΓΒ²ΓΒΎΓΒ΅ΓΒ³ΓΒΎ ΓΒΎΓΒ±Γ\8bΓ\87ΓΒ½ΓΒΎΓΒ³ΓΒΎ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒ½ΓΒ° ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓΒΉ Γ\80ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80 @var{dx}, @var{dy}.
@end deftypefn
+@anchor{multiplot}
@deftypefn {MGL command} {} multiplot @code{nx ny m dx dy} ['style'='<>_^']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} MultiPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{int} dx, @code{int} dy, @code{const char *}style=@code{"<>_^"})
-@deftypefnx {C function} @code{void} mgl_multiplot (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{int} dx, @code{int} dy, @code{const char *}style)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} MultiPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{int} dx, @code{int} dy, @code{const char *}stl=@code{"<>_^"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_multiplot (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{int} dx, @code{int} dy, @code{const char *}stl)
@end ifclear
ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈΠ· @var{dx}*@var{dy} ΡΡΠ΅Π΅ΠΊ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ @var{m}-ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ, ΡΠ΅ΡΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{nx}*@var{ny} ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎΠ²ΠΎΡΠΎΡΡ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°". ΠΠ΅ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠ΅ΠΉ/colorbar ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{style} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: @samp{L} ΠΈΠ»ΠΈ @samp{<} -- Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ, @samp{R} ΠΈΠ»ΠΈ @samp{>} -- Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ, @samp{A} ΠΈΠ»ΠΈ @samp{^} -- Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΠΊΡΠ°Ρ, @samp{U} ΠΈΠ»ΠΈ @samp{_} -- Ρ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ.
@end deftypefn
@anchor{inplot}
@deftypefn {MGL command} {} inplot @code{x1 x2 y1 y2 [rel=off]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} InPlot (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{bool} rel=@code{false})
-@deftypefnx {C function} @code{void} mgl_inplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
-@deftypefnx {C function} @code{void} mgl_relplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} InPlot (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{bool} rel=@code{false})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_inplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_relplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
@end ifclear
-ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}] (ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ [0,1]*[0,1]). ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΡΠΈΡΡΠ½ΠΊΠ°. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{rel}=@code{true}, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΡΠ΅Π³ΠΎ SubPlot() (ΠΈΠ»ΠΈ InPlot() Ρ @var{rel}=@code{false}). Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎΠ²ΠΎΡΠΎΡΡ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°".
+Γ\9fΓΒΎΓΒΌΓΒ΅Γ\89ΓΒ°ΓΒ΅Γ\82 ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄Γ\83Γ\8eΓ\89ΓΒΈΓΒΉ ΓΒ²Γ\8bΓΒ²ΓΒΎΓΒ΄ ΓΒ² ΓΒΏΓ\80Γ\8fΓΒΌΓΒΎΓ\83ΓΒ³ΓΒΎΓΒ»Γ\8cΓΒ½Γ\83Γ\8e ΓΒΎΓΒ±ΓΒ»ΓΒ°Γ\81Γ\82Γ\8c [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}] (ΓΒΈΓ\81Γ\85ΓΒΎΓΒ΄ΓΒ½Γ\8bΓΒΉ Γ\80ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80 [0,1]*[0,1]). ΓΒΓ\82ΓΒ° Γ\84Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓ\8f ΓΒΏΓΒΎΓΒ·ΓΒ²ΓΒΎΓΒ»Γ\8fΓΒ΅Γ\82 ΓΒΏΓΒΎΓΒΌΓΒ΅Γ\81Γ\82ΓΒΈΓ\82Γ\8c ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊ ΓΒ² ΓΒΏΓ\80ΓΒΎΓΒΈΓΒ·ΓΒ²ΓΒΎΓΒ»Γ\8cΓΒ½Γ\83Γ\8e ΓΒΎΓΒ±ΓΒ»ΓΒ°Γ\81Γ\82Γ\8c Γ\80ΓΒΈΓ\81Γ\83ΓΒ½ΓΒΊΓΒ°. Γ\95Γ\81ΓΒ»ΓΒΈ ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80 @var{rel}=@code{true}, Γ\82ΓΒΎ ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82Γ\81Γ\8f ΓΒΏΓΒΎΓΒ·ΓΒΈΓ\86ΓΒΈΓ\8f ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ Γ\82ΓΒ΅ΓΒΊΓ\83Γ\89ΓΒ΅ΓΒ³ΓΒΎ SubPlot() (ΓΒΈΓΒ»ΓΒΈ InPlot() Γ\81 @var{rel}=@code{false}). ΓΒ€Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓ\8f Γ\81ΓΒ±Γ\80ΓΒ°Γ\81Γ\8bΓΒ²ΓΒ°ΓΒ΅Γ\82 ΓΒΌΓΒ°Γ\82Γ\80ΓΒΈΓ\86Γ\83 Γ\82Γ\80ΓΒ°ΓΒ½Γ\81Γ\84ΓΒΎΓ\80ΓΒΌΓΒ°Γ\86ΓΒΈΓΒΈ (ΓΒΏΓΒΎΓΒ²ΓΒΎΓ\80ΓΒΎΓ\82Γ\8b ΓΒΈ Γ\81ΓΒΆΓΒ°Γ\82ΓΒΈΓΒ΅ ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°) ΓΒΈ ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ½ΓΒ° ΓΒ²Γ\8bΓΒ·Γ\8bΓΒ²ΓΒ°Γ\82Γ\8cΓ\81Γ\8f ΓΒΏΓΒ΅Γ\80ΓΒ²ΓΒΎΓΒΉ ΓΒ΄ΓΒ»Γ\8f Γ\81ΓΒΎΓΒ·ΓΒ΄ΓΒ°ΓΒ½ΓΒΈΓ\8f "ΓΒΏΓΒΎΓΒ΄ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°".
@end deftypefn
@anchor{columnplot}
@deftypefn {MGL command} {} columnplot @code{num ind [d=0]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} ColumnPlot (@code{int} num, @code{int} ind, @code{float} d=@code{0})
-@deftypefnx {C function} @code{void} mgl_columnplot (@code{HMGL} gr, @code{int} num, @code{int} ind)
-@deftypefnx {C function} @code{void} mgl_columnplot_d (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} d)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ColumnPlot (@code{int} num, @code{int} ind, @code{float} d=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_columnplot (@code{HMGL} gr, @code{int} num, @code{int} ind)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_columnplot_d (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} d)
+@end ifclear
+ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² @var{ind}-ΡΡ ΡΡΡΠΎΠΊΡ ΡΡΠΎΠ»Π±ΡΠ° ΠΈΠ· @var{num} ΡΡΡΠΎΠΊ. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° SubPlot() (ΠΈΠ»ΠΈ InPlot() Ρ @var{rel}=@code{false}). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{d} Π·Π°Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°Π·ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊ.
+@end deftypefn
+
+@anchor{gridplot}
+@deftypefn {MGL command} {} gridplot @code{nx ny ind [d=0]}
+@ifclear UDAV
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} GridPlot (@code{int} nx, @code{int} ny, @code{int} ind, @code{float} d=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_gridplot (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} ind)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_gridplot_d (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} ind, @code{float} d)
@end ifclear
-Γ\9fΓΒΎΓΒΌΓΒ΅Γ\89ΓΒ°ΓΒ΅Γ\82 ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄Γ\83Γ\8eΓ\89ΓΒΈΓΒΉ ΓΒ²Γ\8bΓΒ²ΓΒΎΓΒ΄ ΓΒ² @var{ind}-Γ\83Γ\8e Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓ\83 Γ\81Γ\82ΓΒΎΓΒ»ΓΒ±Γ\86ΓΒ° ΓΒΈΓΒ· @var{num} Γ\81Γ\82Γ\80ΓΒΎΓΒΊ. Γ\9fΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅ Γ\81Γ\82ΓΒΎΓΒ»ΓΒ±Γ\86ΓΒ° ΓΒ²Γ\8bΓΒ±ΓΒΈΓ\80ΓΒ°ΓΒ΅Γ\82Γ\81Γ\8f ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄ΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒ²Γ\8bΓΒ·ΓΒΎΓΒ²ΓΒ° SubPlot() (ΓΒΈΓΒ»ΓΒΈ InPlot() Γ\81 @var{rel}=@code{false}). Γ\9fΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80 @var{d} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 ΓΒ΄ΓΒΎΓΒΏΓΒΎΓΒ»ΓΒ½ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓΒΉ ΓΒ·ΓΒ°ΓΒ·ΓΒΎΓ\80 ΓΒΌΓΒ΅ΓΒΆΓΒ΄Γ\83 Γ\81Γ\82Γ\80ΓΒΎΓΒΊ. @sref{ColumnPlot sample}
+Γ\9fΓΒΎΓΒΌΓΒ΅Γ\89ΓΒ°ΓΒ΅Γ\82 ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄Γ\83Γ\8eΓ\89ΓΒΈΓΒΉ ΓΒ²Γ\8bΓΒ²ΓΒΎΓΒ΄ ΓΒ² @var{ind}-Γ\83Γ\8e Γ\8fΓ\87ΓΒ΅ΓΒΉΓΒΊΓ\83 Γ\82ΓΒ°ΓΒ±ΓΒ»ΓΒΈΓ\86Γ\8b @var{nx}*@var{ny}. Γ\9fΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅ Γ\8fΓ\87ΓΒ΅ΓΒΉΓΒΊΓΒΈ ΓΒ²Γ\8bΓΒ±ΓΒΈΓ\80ΓΒ°ΓΒ΅Γ\82Γ\81Γ\8f ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄ΓΒ½ΓΒ΅ΓΒ³ΓΒΎ ΓΒ²Γ\8bΓΒ·ΓΒΎΓΒ²ΓΒ° SubPlot() (ΓΒΈΓΒ»ΓΒΈ InPlot() Γ\81 @var{rel}=@code{false}). Γ\9fΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80 @var{d} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 ΓΒ΄ΓΒΎΓΒΏΓΒΎΓΒ»ΓΒ½ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓΒΉ ΓΒ·ΓΒ°ΓΒ·ΓΒΎΓ\80 ΓΒΌΓΒ΅ΓΒΆΓΒ΄Γ\83 Γ\81Γ\82Γ\80ΓΒΎΓΒΊ.
@end deftypefn
@anchor{stickplot}
@deftypefn {MGL command} {} stickplot @code{num ind tet phi}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} StickPlot (@code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
-@deftypefnx {C function} @code{void} mgl_stickplot (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} StickPlot (@code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_stickplot (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
@end ifclear
-ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² @var{ind}-ΡΡ ΡΡΠ΅ΠΉΠΊΡ "Π±ΡΡΡΠΊΠ°" ΠΈΠ· @var{num} ΡΡΠ΅Π΅ΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π±ΡΡΡΠΎΠΊ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡ Π½Π° ΡΠ³Π»Ρ @var{tet}, @var{phi}. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° SubPlot() (ΠΈΠ»ΠΈ InPlot() Ρ @var{rel}=@code{false}). @sref{StickPlot sample}
+ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ Π² @var{ind}-ΡΡ ΡΡΠ΅ΠΉΠΊΡ "Π±ΡΡΡΠΊΠ°" ΠΈΠ· @var{num} ΡΡΠ΅Π΅ΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π±ΡΡΡΠΎΠΊ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡ Π½Π° ΡΠ³Π»Ρ @var{tet}, @var{phi}. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° SubPlot() (ΠΈΠ»ΠΈ InPlot() Ρ @var{rel}=@code{false}).
@end deftypefn
@anchor{title}
-@deftypefn {MGL command} {} title 'txt' ['stl'='#' @code{size=-2}]
+@deftypefn {MGL command} {} title 'title' ['stl'='' @code{size=-2}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Title (@code{const char *}txt, @code{const char *}stl=@code{"#"}, @code{float} size=@code{-2})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Title (@code{const wchar_t *}txt, @code{const char *}stl=@code{"#"}, @code{float} size=@code{-2})
-@deftypefnx {C function} @code{void} mgl_title(@code{HMGL} gr, @code{const char *}txt, @code{const char *}stl, @code{float} size)
-@deftypefnx {C function} @code{void} mgl_titlew (@code{HMGL} gr, @code{const wchar_t *}txt, @code{const char *}stl, @code{float} size)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Title (@code{const char *}txt, @code{const char *}stl=@code{""}, @code{float} size=@code{-2})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Title (@code{const wchar_t *}txt, @code{const char *}stl=@code{""}, @code{float} size=@code{-2})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_title (@code{HMGL} gr, @code{const char *}txt, @code{const char *}stl, @code{float} size)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_titlew (@code{HMGL} gr, @code{const wchar_t *}txt, @code{const char *}stl, @code{float} size)
@end ifclear
ΠΡΠ²ΠΎΠ΄ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ @var{title} Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°" ΡΡΠΈΡΡΠΎΠΌ @var{stl} Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{size}. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{stl} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎΠ²ΠΎΡΠΎΡΡ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°) ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°".
@end deftypefn
@anchor{rotate}
@deftypefn {MGL command} {} rotate @code{tetz tetx [tety=0]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Rotate (@code{float} TetX, @code{float} TetZ, @code{float} TetY=@code{0})
-@deftypefnx {C function} @code{void} mgl_rotate (@code{HMGL} gr, @code{float} TetX, @code{float} TetZ, @code{float} TetY)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Rotate (@code{float} TetX, @code{float} TetZ, @code{float} TetY=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_rotate (@code{HMGL} gr, @code{float} TetX, @code{float} TetZ, @code{float} TetY)
@end ifclear
ΠΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅ΠΉ @{x, z, y@} ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΡΠ³Π»Ρ @var{TetX}, @var{TetZ}, @var{TetY}.
@end deftypefn
@deftypefn {MGL command} {} rotate @code{tet x y z}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} RotateN (@code{float} Tet, @code{float} x, @code{float} y, @code{float} z)
-@deftypefnx {C function} @code{void} mgl_rotate_vector (@code{HMGL} gr, @code{float Tet}, @code{float x}, @code{float y}, @code{float z})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} RotateN (@code{float} Tet, @code{float} x, @code{float} y, @code{float} z)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_rotate_vector (@code{HMGL} gr, @code{float Tet}, @code{float x}, @code{float y}, @code{float z})
@end ifclear
ΠΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° @{@var{x}, @var{y}, @var{z}@} Π½Π° ΡΠ³ΠΎΠ» @var{Tet}.
@end deftypefn
@anchor{aspect}
@deftypefn {MGL command} {} aspect @code{ax ay [az=1]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Aspect (@code{float} Ax, @code{float} Ay, @code{float} Az)
-@deftypefnx {C function} @code{void} mgl_aspect (@code{HMGL} gr, @code{float} Ax, @code{float} Ay, @code{float} Az)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Aspect (@code{float} Ax, @code{float} Ay, @code{float} Az=@code{1})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_aspect (@code{HMGL} gr, @code{float} Ax, @code{float} Ay, @code{float} Az)
@end ifclear
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΡΠ΅ΠΉ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ @var{Ax:Ay:Az}. ΠΠ»Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Rotate().
@end deftypefn
@anchor{perspective}
@deftypefn {MGL command} {} perspective @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Perspective (@code{float} a)
-@deftypefnx {C function} @code{void} mgl_perspective (@code{HMGL} gr, @code{float} a)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Perspective (@code{float} a)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_perspective (@code{HMGL} gr, @code{float} a)
@end ifclear
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ (Π²ΠΊΠ»ΡΡΠ°Π΅Ρ) ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @math{a ~ 1/z_@{eff@} \in [0,1)}. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{a=0}) ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°.
@end deftypefn
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} View (@code{float} TetX, @code{float} TetZ, @code{float} TetY=@code{0})
-@deftypefnx {C function} @code{void} mgl_view (@code{HMGL} gr, @code{float} TetX, @code{float} TetZ, @code{float} TetY)
-ΠΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅ΠΉ @{x, z, y@} ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΡΠ³Π»Ρ @var{TetX}, @var{TetZ}, @var{TetY}. ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ @code{Rotate()}.
-@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} Push ()
-@deftypefnx {C function} @code{void} mgl_mat_push (@code{HMGL} gr)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Push ()
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mat_push (@code{HMGL} gr)
ΠΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠ΅ΠΊ. ΠΠΎΠ·Π΄Π½Π΅Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Pop(). Π‘ΡΠ΅ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΠΎ 10 ΠΌΠ°ΡΡΠΈΡ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} Pop ()
-@deftypefnx {C function} @code{void} mgl_mat_pop (@code{HMGL} gr)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Pop ()
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mat_pop (@code{HMGL} gr)
ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ (Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ) ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Π² ΡΡΠ΅ΠΊ ΠΌΠ°ΡΡΠΈΡΡ.
@end deftypefn
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetPlotFactor (@code{float} val)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_plotfactor (@code{HMGL} gr, @code{float} val)
+ΠΠ°Π΄Π°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π± ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ 1.5. ΠΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΡΡΠ½ΠΊΡΠΈΠΈ Zoom(), Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½ΠΎΠ»Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
+@end deftypefn
+
+Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ 2 ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ @code{Zoom()} ΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ @code{View()} Π²ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ°. Π’.Π΅. ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΊΠ°ΠΊ Π΅ΡΡ ΠΎΠ΄Π½Π° ΠΌΠ°ΡΡΠΈΡΠ° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ½ΠΈ Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ/ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡΡΠΈ.
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} View (@code{float} TetX, @code{float} TetZ, @code{float} TetY=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_view (@code{HMGL} gr, @code{float} TetX, @code{float} TetZ, @code{float} TetY)
+ΠΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅ΠΉ @{x, z, y@} ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΡΠ³Π»Ρ @var{TetX}, @var{TetZ}, @var{TetY}. ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ @code{Rotate()}.
+@end deftypefn
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Zoom (@code{float} x1, @code{float} y1, @code{float} x2, @code{float} y2)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_zoom (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} x2, @code{float} y2)
+ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΡΠΈΡΡΠ½ΠΎΠΊ. ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΡΠ΅Π½ ΠΈ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΡ [x1,x2]*[y1,y2] ΠΎΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ°. ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @var{x1}, @var{x2}, @var{y1}, @var{y2} ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 1. ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ @code{Zoom(0,0,1,1)} Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π² ΠΌΠ°ΡΡΡΠ°Π± ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
+@end deftypefn
+
@end ifclear
@c ##################################################################
-@node Export picture, Primitives drawing, Transformation matrix, MathGL core
+@node Export picture, Primitives, Subplots and rotation, MathGL core
@section ΠΠΊΡΠΏΠΎΡΡ ΡΠΈΡΡΠ½ΠΊΠ°
@cindex SetSize
@anchor{setsize}
@deftypefn {MGL command} {} setsize @code{w h}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetSize (@code{int} width, @code{int} height)
-@deftypefnx {C function} @code{void} mgl_set_size (@code{HMGL} gr, @code{int} width, @code{int} height)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetSize (@code{int} width, @code{int} height)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_size (@code{HMGL} gr, @code{int} width, @code{int} height)
@end ifclear
ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
. Π€ΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ @strong{ΠΏΠ΅ΡΠ΅Π΄} Π»ΡΠ±ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΈΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΈΡΡΠ½ΠΊΠ°.
@end deftypefn
@anchor{quality}
@deftypefn {MGL command} {} quality @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetQuality (@code{int} val=@code{MGL_DRAW_NORM})
-@deftypefnx {C function} @code{void} mgl_set_quality (@code{HMGL} gr, @code{int} val)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetQuality (@code{int} val=@code{MGL_DRAW_NORM})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_quality (@code{HMGL} gr, @code{int} val)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{val}: @code{MGL_DRAW_WIRE=0} -- Π½Π΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°Π½Π΅ΠΉ (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΉ), @code{MGL_DRAW_FAST=1} -- Π½Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΡΠ²Π΅ΡΠ° (Π±ΡΡΡΡΡΠΉ), @code{MGL_DRAW_NORM=2} -- Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ (Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ). ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π±ΠΈΡ @code{MGL_DRAW_LMEM=0x4}, ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΡΠΌΠΎΠ΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°ΡΡΠ°ΡΡ ΠΏΠ°ΠΌΡΡΠΈ).
@end deftypefn
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} StartGroup (const char *name)
-@deftypefnx {C function} @code{void} mgl_start_group (@code{HMGL} gr, @code{const char *}name)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} StartGroup (const char *name)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_start_group (@code{HMGL} gr, @code{const char *}name)
ΠΠ°ΡΠΈΠ½Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ. ΠΡΡΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Ρ.Π΄.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} EndGroup ()
-@deftypefnx {C function} @code{void} mgl_end_group (@code{HMGL} gr)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} EndGroup ()
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_end_group (@code{HMGL} gr)
ΠΠ°Π²Π΅ΡΡΠ°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ.
@end deftypefn
@end ifclear
@cindex ShowImage
@end ifclear
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ (ΠΊΠ°Π΄Ρ) Π² ΡΠ°ΠΉΠ». ΠΠΌΡ ΡΠ°ΠΉΠ»Π° @var{fname} Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{descr} Π΄Π°Π΅Ρ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΠΎΠΊΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠ² PNG, SVG ΠΈ IDTF.
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ (ΠΊΠ°Π΄Ρ) Π² ΡΠ°ΠΉΠ». ΠΠΌΡ ΡΠ°ΠΉΠ»Π° @var{fname} Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{descr} Π΄Π°Π΅Ρ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΠΎΠΊΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠ² PNG, SVG, OBJ ΠΈ IDTF.
@anchor{write}
-@deftypefn {MGL command} {} write 'fname'
+@deftypefn {MGL command} {} write ['fname'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} WriteFrame (@code{const char *}fname=@code{""}, @code{const char *}descr=@code{""})
-@deftypefnx {C function} @code{void} mgl_write_frame (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteFrame (@code{const char *}fname=@code{""}, @code{const char *}descr=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_frame (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
@end ifclear
ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² ΡΠ°ΠΉΠ» @var{fname} Ρ ΡΠΈΠΏΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{descr} Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ). ΠΡΠ»ΠΈ @var{fname} ΠΏΡΡΡΠΎΠΉ, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΡ @samp{frame####.jpg}, Π³Π΄Π΅ @samp{####} -- ΡΠ΅ΠΊΡΡΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°Π΄ΡΠ° ΠΈ ΠΈΠΌΡ @samp{frame} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{PlotId}.
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteTEX (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_tex (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² LaTeX ΡΠ°ΠΉΠ» (ΠΏΠ°ΠΊΠ΅Ρ Tikz/PGF), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΠΊΠ»Π°ΡΡ mglGraphPS). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² LaTeX ΡΠ°ΠΉΠ» (ΠΏΠ°ΠΊΠ΅Ρ Tikz/PGF), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ°. ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteOBJ (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_obj (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² OBJ/MTL ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΠΊΠ»Π°ΡΡ mglGraphPS). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² OBJ/MTL ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @url{http://en.wikipedia.org/wiki/Wavefront_.obj_file, OBJ ΡΠΎΡΠΌΠ°Ρ}). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+@end deftypefn
+
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteXYZ (@code{const char *}fname, @code{const char *}descr=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_xyz (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² XYZ/XYZL/XYZF ΡΠ°ΠΉΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @url{http://people.sc.fsu.edu/~jburkardt/data/xyz/xyz.html, XYZ ΡΠΎΡΠΌΠ°Ρ}). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+@end deftypefn
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteSTL (@code{const char *}fname, @code{const char *}descr=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_stl (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² STL ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @url{http://en.wikipedia.org/wiki/STL_(file_format), STL ΡΠΎΡΠΌΠ°Ρ}). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+@end deftypefn
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteOFF (@code{const char *}fname, @code{const char *}descr=@code{""}, @code{bool} colored=@code{false})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_off (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr, @code{bool} colored)
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² OFF ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @url{http://people.sc.fsu.edu/~jburkardt/data/off/off.html, OFF ΡΠΎΡΠΌΠ°Ρ}). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
@end deftypefn
+@c @deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteX3D (@code{const char *}fname, @code{const char *}descr=@code{""})
+@c @deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_x3d (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
+@c ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² X3D ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @url{http://en.wikipedia.org/wiki/X3d, X3D ΡΠΎΡΠΌΠ°Ρ}). ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ, Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΡΠΎΠ²Π½Ρ) ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°. Π₯ΠΎΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ. ΠΠ»Ρ Π½ΠΈΡ
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PNG ΠΈΠ»ΠΈ JPEG). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+@c @end deftypefn
+
+
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} WriteIDTF (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_write_idtf (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ Π² IDTF ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° (ΠΊΠ»Π°ΡΡ mglGraphIDTF). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° @var{viewer}. Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ @var{viewer} Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{nowait}=@code{true}, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ -- Π½Π΅ ΠΆΠ΄Π΅Ρ ΠΏΠΎΠΊΠ° ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ.
@end deftypefn
+
+@deftypefn {Method on @code{mglGraph}} @code{void} ExportMGLD (@code{const char *}fname, @code{const char *}descr=@code{""})
+@deftypefnx {C function} @code{void} mgl_export_mgld (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
+ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π² ΡΠ°ΠΉΠ» MGLD ΡΠΎΡΠΌΠ°ΡΠ°. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ @code{mglview}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{descr} -- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
+@end deftypefn
+
+@deftypefn {Method on @code{mglGraph}} @code{void} ImportMGLD (@code{const char *}fname, @code{bool} add=@code{false})
+@deftypefnx {C function} @code{void} mgl_import_mgld (@code{HMGL} gr, @code{const char *}fname, @code{int} add)
+ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ MGLD. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: @var{fname} -- ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, @var{add} -- ΡΠ»Π°Π³ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠΎΡΠ΅ΠΊ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ².
+@end deftypefn
+
@end ifclear
@subsection ΠΠ°Π΄ΡΡ/ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ
@ifset UDAV
-Γ\92 MGL ΓΒ½ΓΒ΅Γ\82 Γ\81ΓΒΏΓΒ΅Γ\86ΓΒΈΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒΊΓΒΎΓΒΌΓΒΌΓΒ°ΓΒ½ΓΒ΄ ΓΒ΄ΓΒ»Γ\8f Γ\81ΓΒΎΓΒ·ΓΒ΄ΓΒ°ΓΒ½ΓΒΈΓ\8f ΓΒ°ΓΒ½ΓΒΈΓΒΌΓΒ°Γ\86ΓΒΈΓΒΈ. Γ\9eΓΒ΄ΓΒ½ΓΒ°ΓΒΊΓΒΎ ΓΒΌΓΒΎΓΒΆΓΒ½ΓΒΎ ΓΒ²ΓΒΎΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·ΓΒΎΓΒ²ΓΒ°Γ\82Γ\8cΓ\81Γ\8f ΓΒ²ΓΒΎΓΒ·ΓΒΌΓΒΎΓΒΆΓΒ½ΓΒΎΓ\81Γ\82Γ\8fΓΒΌΓΒΈ Γ\83Γ\82ΓΒΈΓΒ»ΓΒΈΓ\82 (@pxref{Utilities}). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° @samp{##a } ΠΈΠ»ΠΈ @samp{##c }.
+Γ\92 MGL ΓΒ½ΓΒ΅Γ\82 Γ\81ΓΒΏΓΒ΅Γ\86ΓΒΈΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒΊΓΒΎΓΒΌΓΒ°ΓΒ½ΓΒ΄ ΓΒ΄ΓΒ»Γ\8f Γ\81ΓΒΎΓΒ·ΓΒ΄ΓΒ°ΓΒ½ΓΒΈΓ\8f ΓΒ°ΓΒ½ΓΒΈΓΒΌΓΒ°Γ\86ΓΒΈΓΒΈ. Γ\9eΓΒ΄ΓΒ½ΓΒ°ΓΒΊΓΒΎ ΓΒΌΓΒΎΓΒΆΓΒ½ΓΒΎ ΓΒ²ΓΒΎΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·ΓΒΎΓΒ²ΓΒ°Γ\82Γ\8cΓ\81Γ\8f ΓΒ²ΓΒΎΓΒ·ΓΒΌΓΒΎΓΒΆΓΒ½ΓΒΎΓ\81Γ\82Γ\8fΓΒΌΓΒΈ Γ\83Γ\82ΓΒΈΓΒ»ΓΒΈΓ\82 (Γ\81ΓΒΌ. @ref{Utilities}). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΏΠ΅ΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° @samp{##a } ΠΈΠ»ΠΈ @samp{##c }.
@end ifset
@ifclear UDAV
@cindex StartGIF
@cindex CloseGIF
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (@pxref{Widget classes}) ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°Π΄ΡΠΎΠ² Π² Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GIF ΡΠ°ΠΉΠ».
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½ΠΎ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΡΠΌ. @ref{Widget classes}) ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°Π΄ΡΠΎΠ² Π² Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GIF ΡΠ°ΠΉΠ».
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} NewFrame ()
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_new_frame (@code{HMGL} gr)
@ifclear UDAV
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ, Π΅Π³ΠΎ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅, @ref{Widget classes}) ΠΈΠ»ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ» (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅, @ref{Export to file}).
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} GetRGB (@code{char *}buf, @code{int} size)
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} GetBGRN (@code{char *}buf, @code{int} size)
+@deftypefn {Method on @code{mglGraph}} @code{const unsigned char *} GetRGB ()
+@deftypefnx {Method on @code{mglGraph}} @code{void} GetRGB (@code{char *}buf, @code{int} size)
+@deftypefnx {Method on @code{mglGraph}} @code{void} GetBGRN (@code{char *}buf, @code{int} size)
@deftypefnx {C function} @code{const unsigned char *} mgl_get_rgb (@code{HMGL} gr)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ°. Π€ΠΎΡΠΌΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (ΠΏΠΈΠΊΡΠ΅Π»Ρ): @{red, green, blue@}. Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Width*Height. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° @{i,j@} Π΅ΡΡΡ [3*i + 3*Width*j] (ΠΈΠ»ΠΈ [4*i + 4*Width*j] Π΄Π»Ρ @code{GetBGRN()}). Π Python Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±ΡΡΠ΅Ρ @var{buf} Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° @var{size}, Ρ.Π΅. ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
@verbatim
@end verbatim
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} GetRGBA (@code{char *}buf, @code{int} size)
+@deftypefn {Method on @code{mglGraph}} @code{const unsigned char *} GetRGBA ()
+@deftypefnx {Method on @code{mglGraph}} @code{void} GetRGBA (@code{char *}buf, @code{int} size)
@deftypefnx {C function} @code{const unsigned char *} mgl_get_rgba (@code{HMGL} gr)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGBA Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°Π΄ΡΠ°. Π€ΠΎΡΠΌΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (ΠΏΠΈΠΊΡΠ΅Π»Ρ): @{red, green, blue, alpha@}. Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Width*Height. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° @{i,j@} Π΅ΡΡΡ [4*i + 4*Width*j].
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} GetWidth ()
@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} GetHeight ()
-@deftypefnx {C function} @code{int} mgl_get_width (@code{HMGL} gr)
-@deftypefnx {C function} @code{int} mgl_get_height (@code{HMGL} gr)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_get_width (@code{HMGL} gr)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_get_height (@code{HMGL} gr)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{mglPoint} CalcXYZ (@code{int} xs, @code{int} ys)
-@deftypefnx {C function} @code{void} mgl_calc_xyz (@code{HMGL} gr, @code{int} xs, @code{int} ys, @code{float *}x, @code{float *}y, @code{float *}z)
-ΠΡΡΠΈΡΠ»ΡΠ΅Ρ 3D ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @{x,y,z@} Π΄Π»Ρ ΡΠΊΡΠ°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ @{xs,ys@}. Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π² ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ InPlot (@pxref{Transformation matrix}).
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_calc_xyz (@code{HMGL} gr, @code{int} xs, @code{int} ys, @code{float *}x, @code{float *}y, @code{float *}z)
+ΠΡΡΠΈΡΠ»ΡΠ΅Ρ 3D ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @{x,y,z@} Π΄Π»Ρ ΡΠΊΡΠ°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ @{xs,ys@}. Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π² ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ InPlot (ΡΠΌ. @ref{Transformation matrix}).
@end deftypefn
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{mglPoint} CalcScr (@code{mglPoint} p)
-@deftypefnx {C function} @code{void} mgl_calc_scr (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{int *}xs, @code{int *}ys)
-ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @{xs,ys@} Π΄Π»Ρ 3D ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @{x,y,z@}. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ InPlot (@pxref{Transformation matrix}).
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_calc_scr (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{int *}xs, @code{int *}ys)
+ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΊΡΠ°Π½Π½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @{xs,ys@} Π΄Π»Ρ 3D ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @{x,y,z@}. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ InPlot (ΡΠΌ. @ref{Transformation matrix}).
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} SetObjId (@code{int} id)
-@deftypefnx {C function} @code{void} mgl_set_obj_id (@code{HMGL} gr, @code{int} id)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetObjId (@code{int} id)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_obj_id (@code{HMGL} gr, @code{int} id)
ΠΠ°Π΄Π°Π΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠΎΠ²".
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} GetObjId (@code{long} xs, @code{long} ys)
-@deftypefnx {C function} @code{int} mgl_get_obj_id (@code{HMGL} gr, @code{long} xs, @code{long} ys)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} GetObjId (@code{long} xs, @code{long} ys)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_get_obj_id (@code{HMGL} gr, @code{long} xs, @code{long} ys)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠΎΡΠΊΠ΅ @{xs, ys@} ΡΠΈΡΡΠ½ΠΊΠ°.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} GetSplId (@code{long} xs, @code{long} ys)
-@deftypefnx {C function} @code{int} mgl_get_spl_id (@code{HMGL} gr, @code{long} xs, @code{long} ys)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} GetSplId (@code{long} xs, @code{long} ys)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_get_spl_id (@code{HMGL} gr, @code{long} xs, @code{long} ys)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ "ΠΏΠΎΠ΄Π³ΡΠ°ΡΠΈΠΊΠ°" Π² ΡΠΎΡΠΊΠ΅ @{xs, ys@} ΡΠΈΡΡΠ½ΠΊΠ°.
@end deftypefn
+@deftypefn {Method on @code{mglGraph}} @code{void} Highlight (@code{int} id)
+@deftypefnx {C function} @code{void} mgl_highlight (@code{HMGL} gr, @code{int} id)
+ΠΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ @var{id}.
+@end deftypefn
+
@end ifclear
@c ------------------------------------------------------------------
@cindex MPI_Send
@cindex MPI_Recv
-There are few functions which allow parallelization at user-level. First 2 limit the drawing region (for example, by subplot per thread) and copy data from that region in another @code{mglGraph} instance.
+ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ MathGL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ (Π΅ΡΠ»ΠΈ MathGL Π±ΡΠ»Π° ΡΠΎΠ±ΡΠ°Π½Π° Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ pthread). ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ².
-@deftypefn {Method on @code{mglGraph}} @code{int} SetDrawReg (@code{int} nx, @code{int} ny, @code{int} m)
-@deftypefnx {C function} @code{int} mgl_set_draw_reg (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m)
-Set drawable region as a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area.
+@deftypefn {C function} @code{int} mgl_set_num_thr (@code{int} n)
+ΠΠ°Π΄Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π² MathGL. ΠΡΠΈ @var{n}<1 ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² (ΡΠ΄Π΅Ρ) Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΈ @var{n}=1 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} PutDrawReg (@code{int} nx, @code{int} ny, @code{int} m, @code{const mglGraph *}g)
-@deftypefnx {C function} @code{int} mgl_put_draw_reg (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{HMGL} g)
-Put drawing from another instance @var{g} for a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area. The width and height of both instances must be the same.
-@end deftypefn
-
-Another option is combining bitmap image (taking into account Z-ordering) from different instances. This method is most appropriate for computer clusters when the data size is so large that it exceed the memory of single computer node.
+ΠΡΡΠ³Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ -- ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² @code{mglGraph}. ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΈ, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
-@deftypefn {Method on @code{mglGraph}} @code{int} Combine (@code{const mglGraph *}g)
-@deftypefnx {C function} @code{int} mgl_combine_gr (@code{HMGL} gr, @code{HMGL} g)
-Combine drawing from instance @var{g} with @var{gr} (or with this) taking into account Z-ordering of pixels. The width and height of both instances must be the same.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} Combine (@code{const mglGraph *}g)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_combine_gr (@code{HMGL} gr, @code{HMGL} g)
+ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅Ρ (Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ) ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· @var{g} Ρ @var{gr}, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ``Π²ΡΡΠΎΡΡ'' ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. Π¨ΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° ΠΎΠ±ΠΎΠΈΡ
ΡΠΈΡΡΠ½ΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} MPI_Send (@code{int} id)
-@deftypefnx {C function} @code{int} mgl_mpi_send (@code{HMGL} gr, @code{int} id)
-Send graphical information from node @var{id} using MPI. The width and height in both nodes must be the same.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} MPI_Send (@code{int} id)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_mpi_send (@code{HMGL} gr, @code{int} id)
+ΠΠΎΡΡΠ»Π°Π΅Ρ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° (Π½ΠΎΠ΄Ρ) @var{id}, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ MPI. Π¨ΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° ΠΎΠ±ΠΎΠΈΡ
ΡΠΈΡΡΠ½ΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{int} MPI_Recv (@code{int} id)
-@deftypefnx {C function} @code{int} mgl_mpi_send (@code{HMGL} gr, @code{int} id)
-Receive graphical information from node @var{id} using MPI. The width and height in both nodes must be the same.
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{int} MPI_Recv (@code{int} id)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_mpi_send (@code{HMGL} gr, @code{int} id)
+ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° (Π½ΠΎΠ΄Ρ) @var{id}, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ MPI. Π¨ΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ° ΠΎΠ±ΠΎΠΈΡ
ΡΠΈΡΡΠ½ΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ.
@end deftypefn
@end ifclear
@c ##################################################################
-@node Primitives drawing, Text printing, Export picture, MathGL core
+@node Primitives, Text printing, Export picture, MathGL core
@section Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ²
@cindex Ball
@cindex Clf
@cindex Line
@cindex Curve
@cindex Glyph
-@cindex Mark
-@cindex Error
@cindex Face
@cindex FaceX
@cindex FaceY
@cindex Drop
@cindex Sphere
+@ifclear UDAV
+@cindex Mark
+@cindex Error
+@end ifclear
+
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΠΈΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° Π»ΠΈΠ½ΠΈΠΉ, ΡΠΎΡΠ΅ΠΊ, ΡΡΠ΅Ρ, ΠΊΠ°ΠΏΠ΅Π»Ρ, ΠΊΠΎΠ½ΡΡΠΎΠ², ΠΈ Ρ.Π΄.
@anchor{clf}
@deftypefn {MGL command} {} clf
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Clf ()
-@deftypefnx {Method on @code{mglGraph}} @code{void} Clf (@code{float} r, @code{float} g, @code{float} b)
-@deftypefnx {C function} @code{void} mgl_clf (@code{HMGL} gr)
-@deftypefnx {C function} @code{void} mgl_clf_rgb (@code{HMGL} gr, @code{float} r, @code{float} g, @code{float} b)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Clf ()
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Clf (@code{float} r, @code{float} g, @code{float} b)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_clf (@code{HMGL} gr)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_clf_rgb (@code{HMGL} gr, @code{float} r, @code{float} g, @code{float} b)
@end ifclear
-ΠΡΠΈΡΠ°Π΅Ρ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ²Π΅ΡΠΎΠΌ @var{Back}.
+ΠΡΠΈΡΠ°Π΅Ρ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ.
@end deftypefn
@anchor{ball}
@deftypefn {MGL command} {} ball @code{x y} ['col'='r.']
@deftypefnx {MGL command} {} ball @code{x y z} ['col'='r.']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Ball (@code{mglPoint} p, @code{char} col=@code{'r'})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Mark (@code{mglPoint} p, @code{const char *}mark)
-@deftypefnx {C function} @code{void} mgl_ball (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z)
-@deftypefnx {C function} @code{void} mgl_mark (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const char *}mark)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Ball (@code{mglPoint} p, @code{char} col=@code{'r'})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mark (@code{mglPoint} p, @code{const char *}mark)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_ball (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mark (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const char *}mark)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΠΊΠ΅Ρ (ΡΠΎΡΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ @var{p}=@{@var{x}, @var{y}, @var{z}@} ΠΈ ΡΠ²Π΅ΡΠΎΠΌ @var{col}.
@end deftypefn
@ifclear UDAV
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Error (@code{mglPoint} p, @code{mglPoint} e, @code{char} *pen=@code{""})
-Π ΠΈΡΡΠ΅Ρ 3d error box Π² ΡΠΎΡΠΊΠ΅ @var{p} ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{e} ΠΈ ΡΡΠΈΠ»Π΅ΠΌ @var{pen}.
+@deftypefn {Method on @code{mglGraph}} @code{void} Error (@code{mglPoint} p, @code{mglPoint} e, @code{char} *stl=@code{""})
+@deftypefnx {C function} @code{void} mgl_error_box (@code{HMGL} gr, @code{float} px, @code{float} py, @code{float} pz, @code{float} ex, @code{float} ey, @code{float} ez, @code{char *}stl)
+Π ΠΈΡΡΠ΅Ρ 3d error box Π² ΡΠΎΡΠΊΠ΅ @var{p} ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{e} ΠΈ ΡΡΠΈΠ»Π΅ΠΌ @var{stl}.
@end deftypefn
@end ifclear
@deftypefn {MGL command} {} line @code{x1 y1 x2 y2} ['stl'='']
@deftypefnx {MGL command} {} line @code{x1 y1 z1 x2 y2 z2} ['stl'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Line (@code{mglPoint} p1, @code{mglPoint} p2, @code{char *}stl=@code{"B"}, @code{int}num=@code{2})
-@deftypefnx {C function} @code{void} mgl_line (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{char *}stl, @code{int}num)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Line (@code{mglPoint} p1, @code{mglPoint} p2, @code{char *}stl=@code{"B"}, @code{int}num=@code{2})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_line (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{char *}stl, @code{int}num)
@end ifclear
Π ΠΈΡΡΠ΅Ρ Π³Π΅ΠΎΠ΄Π΅Π·ΠΈΡΠ΅ΡΠΊΡΡ Π»ΠΈΠ½ΠΈΡ (Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
-- ΠΏΡΡΠΌΡΡ) ΠΈΠ· ΡΠΎΡΠΊΠΈ @var{p1} Π² @var{p2} ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ @var{stl}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{num} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π³Π»Π°Π΄ΠΊΠΎΡΡΡ Π»ΠΈΠ½ΠΈΠΈ (ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π½Π° Π»ΠΈΠ½ΠΈΠΈ). ΠΡΠ»ΠΈ @var{num}=@code{2}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠ°Ρ Π΄Π°ΠΆΠ΅ Π² ΠΊΡΠΈΠ²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
. ΠΠ°ΠΎΠ±ΠΎΡΠΎΡ, Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, =@code{100}) ΡΠΈΡΡΠ΅ΡΡΡ Π³Π΅ΠΎΠ΄Π΅Π·ΠΈΡΠ΅ΡΠΊΠ°Ρ Π»ΠΈΠ½ΠΈΡ (ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Π² ΠΏΠΎΠ»ΡΡΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
, ΠΏΠ°ΡΠ°Π±ΠΎΠ»Π° Π² ΠΏΠ°ΡΠ°Π±ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈ Ρ.Π΄.). ΠΠΈΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡ Π΅Π΅ Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
@end deftypefn
@deftypefn {MGL command} {} curve @code{x1 y1 dx1 dy1 x2 y2 dx2 dy2} ['stl'='']
@deftypefnx {MGL command} {} curve @code{x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2} ['stl'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Curve (@code{mglPoint} p1, @code{mglPoint} d1, @code{mglPoint} p2, @code{mglPoint} d2, @code{const char *}stl=@code{"B"}, @code{int} num=@code{100})
-@deftypefnx {C function} @code{void} mgl_curve (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} dx1, @code{float} dy1, @code{float} dz1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} dx2, @code{float} dy2, @code{float} dz2, @code{const char *}stl, @code{int} num)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Curve (@code{mglPoint} p1, @code{mglPoint} d1, @code{mglPoint} p2, @code{mglPoint} d2, @code{const char *}stl=@code{"B"}, @code{int} num=@code{100})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_curve (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} dx1, @code{float} dy1, @code{float} dz1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} dx2, @code{float} dy2, @code{float} dz2, @code{const char *}stl, @code{int} num)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅ ΠΈΠ· ΡΠΎΡΠΊΠΈ @var{p1} Π² @var{p2} ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ @var{stl}. ΠΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π² ΡΠΎΡΠΊΠ°Ρ
ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Ρ @var{d1}, @var{d2}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{num} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π³Π»Π°Π΄ΠΊΠΎΡΡΡ Π»ΠΈΠ½ΠΈΠΈ (ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π½Π° Π»ΠΈΠ½ΠΈΠΈ). ΠΡΠΈΠ²Π°Ρ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡ Π΅Π΅ Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
@end deftypefn
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} Face (@code{mglPoint} p1, @code{mglPoint} p2, @code{mglPoint} p3, @code{mglPoint} p4, @code{const char *}stl=@code{"w"})
-@deftypefnx {C function} @code{void} mgl_curve (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} x3, @code{float} y3, @code{float} z3, @code{float} x4, @code{float} y4, @code{float} z4, @code{const char *}stl)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Face (@code{mglPoint} p1, @code{mglPoint} p2, @code{mglPoint} p3, @code{mglPoint} p4, @code{const char *}stl=@code{"w"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_curve (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} x3, @code{float} y3, @code{float} z3, @code{float} x4, @code{float} y4, @code{float} z4, @code{const char *}stl)
Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (Π³ΡΠ°Π½Ρ) Ρ ΡΠ³Π»Π°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ
@var{p1}, @var{p2}, @var{p3}, @var{p4} ΠΈ ΡΠ²Π΅ΡΠΎΠΌ(-Π°ΠΌΠΈ) @var{stl}. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ Π²ΡΠ΅ΠΉ Π³ΡΠ°Π½ΠΈ, ΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π²ΡΠ΅ 4 ΡΠ²Π΅ΡΠ°. ΠΡΠ°Π½Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π° Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡ Π΅Π΅ Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
@end deftypefn
@end ifclear
@deftypefn {MGL command} {} facex @code{x0 y0 z0 wy wz} ['stl'='' @code{d1=0 d2=0}]
@deftypefnx {MGL command} {} facey @code{x0 y0 z0 wx wz} ['stl'='' @code{d1=0 d2=0}]
@deftypefnx {MGL command} {} facez @code{x0 y0 z0 wx wy} ['stl'='' @code{d1=0 d2=0}]
-@deftypefnx {Method on @code{mglGraph}} @code{void} FaceX (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wy, @code{float} wz, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
-@deftypefnx {Method on @code{mglGraph}} @code{void} FaceY (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wz, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
-@deftypefnx {Method on @code{mglGraph}} @code{void} FaceZ (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wy, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
-@deftypefnx {C function} @code{void} mgl_facex (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wy, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
-@deftypefnx {C function} @code{void} mgl_facey (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
-@deftypefnx {C function} @code{void} mgl_facez (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wy, @code{const char *}stl, @code{float} d1, @code{float} d2)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} FaceX (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wy, @code{float} wz, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} FaceY (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wz, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} FaceZ (@code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wy, @code{const char *}stl=@code{"w"}, @code{float} d1=@code{0}, @code{float} d2=@code{0})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_facex (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wy, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_facey (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_facez (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wy, @code{const char *}stl, @code{float} d1, @code{float} d2)
Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ (Π³ΡΠ°Π½Ρ) ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΠΎ ΠΎΡΠΈ [x,y,z] Π² ΡΠΎΡΠΊΠ΅ @{@var{x0}, @var{y0}, @var{z0}@} ΡΠ²Π΅ΡΠΎΠΌ @var{stl} ΠΈ ΡΠΈΡΠΈΠ½ΠΎΠΉ @var{wx}, @var{wy}, @var{wz} Π²Π΄ΠΎΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ Π²ΡΠ΅ΠΉ Π³ΡΠ°Π½ΠΈ, ΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
Π²Π΅ΡΡΠΈΠ½ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Ρ Π²ΡΠ΅ 4 ΡΠ²Π΅ΡΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ @var{d1}!=0, @var{d2}!=0 Π·Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠΎΡΠΊΠΈ (Ρ.Π΅. ΡΠΈΡΡΡΡ ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ).ΠΡΠ°Π½Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π° Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°ΡΡΡ Π΅Π΅ Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
@end deftypefn
@deftypefn {MGL command} {} sphere @code{x0 y0 r} ['col'='r']
@deftypefnx {MGL command} {} sphere @code{x0 y0 z0 r} ['col'='r']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Sphere (@code{mglPoint} p, @code{float} r, @code{const char *}stl=@code{"r"})
-@deftypefnx {C function} @code{void} mgl_sphere (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} r, @code{const char *}stl)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Sphere (@code{mglPoint} p, @code{float} r, @code{const char *}stl=@code{"r"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_sphere (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} r, @code{const char *}stl)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΡΡΠ΅ΡΡ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} Ρ ΡΠ΅Π½ΡΡΠΎΠΌ Π² ΡΠΎΡΠΊΠ΅ @var{p}=@{@var{x0}, @var{y0}, @var{z0}@} ΡΠ²Π΅ΡΠΎΠΌ @var{stl}.
@end deftypefn
@anchor{drop}
-@deftypefn {MGL command} {} drop @code{x0 y0 dx dy r} ['col'='b' @code{sh=1 asp=1}]
-@deftypefnx {MGL command} {} drop @code{x0 y0 z0 dx dy dz r} ['col'='b' @code{sh=1 asp=1}]
+@deftypefn {MGL command} {} drop @code{x0 y0 dx dy r} ['col'='r' @code{sh=1 asp=1}]
+@deftypefnx {MGL command} {} drop @code{x0 y0 z0 dx dy dz r} ['col'='r' @code{sh=1 asp=1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Drop (@code{mglPoint} p, @code{mglPoint} d, @code{float} r, @code{mglColor} col, @code{float} shift=@code{1}, @code{float} ap=@code{1})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Drop (@code{mglPoint} p, @code{mglPoint} d, @code{float} r, @code{const char *}col=@code{"r"}, @code{float} shift=@code{1}, @code{float} ap=@code{1})
@deftypefnx {C function} @code{void} mgl_drop (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} dx, @code{float} dy, @code{float} dz, @code{float} r, @code{const char *}col, @code{float} shift, @code{float} ap)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΏΠ»Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} Π² ΡΠΎΡΠΊΠ΅ @var{p} Π²ΡΡΡΠ½ΡΡΡΡ Π²Π΄ΠΎΠ»Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ @var{d} ΡΠ²Π΅ΡΠΎΠΌ @var{col}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{shift} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π²ΡΡΡΠ½ΡΡΠΎΡΡΠΈ: @samp{0} -- ΡΡΠ΅ΡΠ°, @samp{1} -- ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠ°ΠΏΠ»Ρ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{ap} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΊΠ°ΠΏΠ»ΠΈ (Π°Π½Π°Π»ΠΎΠ³ "ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ½ΠΎΡΡΠΈ" Π΄Π»Ρ ΡΡΠ΅ΡΡ). @sref{Drops sample}
@anchor{cone}
@deftypefn {MGL command} {} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'stl'='' @code{edge=off}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Cone (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r1, @code{float} r2=@code{-1}, @code{const char *}stl=@code{"B"}, @code{bool} edge=@code{false})
-@deftypefnx {C function} @code{void} mgl_cone (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r1, @code{float} r2, @code{const char *}stl, @code{int} draw_edge)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Cone (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r1, @code{float} r2=@code{-1}, @code{const char *}stl=@code{"B"}, @code{bool} edge=@code{false})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_cone (@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r1, @code{float} r2, @code{const char *}stl, @code{int} draw_edge)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΡΡΡΠ±Ρ (ΠΈΠ»ΠΈ ΡΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡ Π΅ΡΠ»ΠΈ @var{edge}=@code{false}) ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @var{p1}, @var{p2} Ρ ΡΠ°Π΄ΠΈΡΡΠ°ΠΌΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ°Ρ
@var{r1}, @var{r2}. ΠΡΠ»ΠΈ @var{r2}<0, ΡΠΎ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ @var{r2}=@var{r1}. Π¦Π²Π΅Ρ ΠΊΠΎΠ½ΡΡΠ° Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ @var{stl}.
@end deftypefn
@deftypefn {MGL command} {} circle @code{x0 y0 r} ['col'='r']
@deftypefnx {MGL command} {} circle @code{x0 y0 z0 r} ['col'='r']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Circle (@code{mglPoint} p, @code{float} r, @code{const char *}stl=@code{"r"})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Circle (@code{mglPoint} p, @code{float} r, @code{const char *}stl=@code{"r"})
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΠΊΡΡΠ³ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} Ρ ΡΠ΅Π½ΡΡΠΎΠΌ Π² ΡΠΎΡΠΊΠ΅ @var{p}=@{@var{x0}, @var{y0}, @var{z0}@} ΡΠ²Π΅ΡΠΎΠΌ @var{stl}. ΠΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: @samp{#} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°Π½ΠΈΡΠ°, @samp{@@} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ° (Π²ΡΠΎΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· @var{col} ΠΈΠ»ΠΈ ΡΠ΅ΡΠ½ΡΠΌΠΈ).
@end deftypefn
@deftypefn {MGL command} {} ellipse @code{x1 y1 x2 y2 r} ['col'='r' @code{sh=1 asp=1}]
@deftypefnx {MGL command} {} ellipse @code{x1 y1 z1 x2 y2 z2 r} ['col'='r' @code{sh=1 asp=1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Ellipse (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r, @code{const char *}col=@code{"r"})
-@deftypefnx {C function} @code{void} mgl_ellipse(@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r, @code{const char *}col)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Ellipse (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r, @code{const char *}col=@code{"r"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_ellipse(@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r, @code{const char *}col)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΠΊΡΡΠ³ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} Ρ ΡΠΎΠΊΡΡΠ°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ
@var{p1}, @var{p2} ΡΠ²Π΅ΡΠΎΠΌ @var{stl}. ΠΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: @samp{#} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°Π½ΠΈΡΠ°, @samp{@@} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ° (Π²ΡΠΎΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· @var{col} ΠΈΠ»ΠΈ ΡΠ΅ΡΠ½ΡΠΌΠΈ). @sref{Ellipse sample}
@end deftypefn
@deftypefn {MGL command} {} rhomb @code{x1 y1 x2 y2 r} ['col'='r' @code{sh=1 asp=1}]
@deftypefnx {MGL command} {} rhomb @code{x1 y1 z1 x2 y2 z2 r} ['col'='r' @code{sh=1 asp=1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Rhomb (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r, @code{const char *}col=@code{"r"})
-@deftypefnx {C function} @code{void} mgl_rhomb(@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r, @code{const char *}col)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Rhomb (@code{mglPoint} p1, @code{mglPoint} p2, @code{float} r, @code{const char *}col=@code{"r"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_rhomb(@code{HMGL} gr, @code{float} x1, @code{float} y1, @code{float} z1, @code{float} x2, @code{float} y2, @code{float} z2, @code{float} r, @code{const char *}col)
@end ifclear
Π ΠΈΡΡΠ΅Ρ ΡΠΎΠΌΠ± ΡΠΈΡΠΈΠ½Ρ @var{r} Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π² ΡΠΎΡΠΊΠ°Ρ
@var{p1}, @var{p2} ΡΠ²Π΅ΡΠΎΠΌ @var{stl}. ΠΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ: @samp{#} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°Π½ΠΈΡΠ°, @samp{@@} ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΠ° (Π²ΡΠΎΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· @var{col} ΠΈΠ»ΠΈ ΡΠ΅ΡΠ½ΡΠΌΠΈ). ΠΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 3 ΡΠ²Π΅ΡΠ°, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½Π°Ρ Π·Π°Π»ΠΈΠ²ΠΊΠ°. @sref{Ellipse sample}
@end deftypefn
@c ##################################################################
-@node Text printing, Axis and Colorbar, Primitives drawing, MathGL core
+@node Text printing, Axis and Colorbar, Primitives, MathGL core
@section ΠΡΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°
@ifclear UDAV
@cindex Puts
@cindex Label
@cindex fgets
-Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΡΠΎΠΊΡ ΡΠ΅ΠΊΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΈΡΡΠ½ΠΊΠ°, Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ Π²Π΄ΠΎΠ»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΡΠΈΠ²ΠΎΠΉ. MathGL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π’Π΅Π₯-ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π΄Π΅ΡΠ°Π»ΡΠ½Π΅Π΅ @pxref{Font styles}). ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈΠΌΠ΅ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ 8-bit ΡΡΡΠΎΠΊ (@code{char *}) ΠΈ Π΄Π»Ρ Unicode ΡΡΡΠΎΠΊ (@code{wchar_t *}). Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ, Ρ.Π΅. ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΠΎΠΊΠ°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ @code{setlocale()}. ΠΡΠ³ΡΠΌΠ΅Π½Ρ @var{size} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ°: ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ (=-@var{size}*@var{FontSize}) Π΅ΡΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½. ΠΠ°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΡΠ° (STIX, arial, courier, times ΠΈ Π΄Ρ) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ LoadFont(). @xref{Font settings}.
+Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΡΠΎΠΊΡ ΡΠ΅ΠΊΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΈΡΡΠ½ΠΊΠ°, Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ Π²Π΄ΠΎΠ»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΡΠΈΠ²ΠΎΠΉ. MathGL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΡΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π’Π΅Π₯-ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (Π΄Π΅ΡΠ°Π»ΡΠ½Π΅Π΅ ΡΠΌ. @ref{Font styles}). ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΈΠΌΠ΅ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Π΄Π»Ρ 8-bit ΡΡΡΠΎΠΊ (@code{char *}) ΠΈ Π΄Π»Ρ Unicode ΡΡΡΠΎΠΊ (@code{wchar_t *}). Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ, Ρ.Π΅. ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π»ΠΎΠΊΠ°Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ @code{setlocale()}. ΠΡΠ³ΡΠΌΠ΅Π½Ρ @var{size} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ°: ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ (=-@var{size}*@var{FontSize}) Π΅ΡΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π΅Π½. ΠΠ°ΡΠ΅ΡΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΡΠ° (STIX, arial, courier, times ΠΈ Π΄Ρ) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ LoadFont(). @xref{Font settings}.
-ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΈΡΡΠ° Π·Π°Π΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ²Π΅ΡΠ° @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) ΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° @samp{:}, ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠΈΠ»Ρ (@samp{rbiwou}) ΠΈ/ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (@samp{LRC}). Π‘ΡΠΈΠ»ΠΈ ΡΡΠΈΡΡΠ°: @samp{r} -- ΠΏΡΡΠΌΠΎΠΉ, @samp{i} -- ΠΊΡΡΡΠΈΠ², @samp{b} -- ΠΆΠΈΡΠ½ΡΠΉ, @samp{w} -- ΠΊΠΎΠ½ΡΡΡΠ½ΡΠΉ, @samp{o} -- Π½Π°Π΄ΡΠ΅ΡΠΊΠ½ΡΡΡΠΉ, @samp{u} -- ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ. Π’ΠΈΠΏΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ: @samp{L} -- ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), @samp{C} -- ΠΏΠΎ ΡΠ΅Π½ΡΡΡ, @samp{R} -- ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠ° @samp{b:iC} ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΡΡΡΠΈΠ²Ρ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ²Π΅ΡΠ° Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ.
+ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠΈΡΡΠ° Π·Π°Π΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ²Π΅ΡΠ° @samp{wkrgbcymhRGBCYMHW} (ΡΠΌ. @ref{Line styles}) ΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° @samp{:}, ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠΈΠ»Ρ (@samp{rbiwou}) ΠΈ/ΠΈΠ»ΠΈ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (@samp{LRC}). Π‘ΡΠΈΠ»ΠΈ ΡΡΠΈΡΡΠ°: @samp{r} -- ΠΏΡΡΠΌΠΎΠΉ, @samp{i} -- ΠΊΡΡΡΠΈΠ², @samp{b} -- ΠΆΠΈΡΠ½ΡΠΉ, @samp{w} -- ΠΊΠΎΠ½ΡΡΡΠ½ΡΠΉ, @samp{o} -- Π½Π°Π΄ΡΠ΅ΡΠΊΠ½ΡΡΡΠΉ, @samp{u} -- ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΠΉ ΡΡΠΈΡΡ. Π’ΠΈΠΏΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ: @samp{L} -- ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), @samp{C} -- ΠΏΠΎ ΡΠ΅Π½ΡΡΡ, @samp{R} -- ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠ° @samp{b:iC} ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΡΡΡΠΈΠ²Ρ ΡΠΈΠ½Π΅Π³ΠΎ ΡΠ²Π΅ΡΠ° Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ.
ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ @samp{aA}, ΡΠΎ ΡΠ΅ΠΊΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
(ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1]). ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΡΠ½ΠΊΠ° (Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ @samp{A}) ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ SubPlot()/InPlot() (Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ @samp{a}). ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{@@}, ΡΠΎ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅ΠΊΡΡΠ° ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ.
+@sref{Text features}
+
@anchor{text}
@deftypefn {MGL command} {} text @code{x y} 'text' ['fnt'='' @code{size=-1}]
@deftypefnx {MGL command} {} text @code{x y z} 'text' ['fnt'='' @code{size=-1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Puts (@code{mglPoint} p, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{float} size=@code{-1})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Putsw (@code{mglPoint} p, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{float} size=@code{-1})
-@deftypefnx {C function} @code{void} mgl_puts (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const char *}text, @code{const char *}fnt, @code{float} size)
-@deftypefnx {C function} @code{void} mgl_putsw (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const wchar_t *}text, @code{const char *}fnt, @code{float} size)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Puts (@code{mglPoint} p, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{float} size=@code{-1})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Putsw (@code{mglPoint} p, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{float} size=@code{-1})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_puts (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const char *}text, @code{const char *}fnt, @code{float} size)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_putsw (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{const wchar_t *}text, @code{const char *}fnt, @code{float} size)
@end ifclear
ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ @var{text} ΠΎΡ ΡΠΎΡΠΊΠΈ @var{p} ΡΡΠΈΡΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΡΡΡΠΎΠΊΠΎΠΉ @var{fnt}.
@end deftypefn
@deftypefn {MGL command} {} text @code{x y dx dy} 'text' ['fnt'=':L' @code{size=-1}]
@deftypefnx {MGL command} {} text @code{x y z dx dy dz} 'text' ['fnt'=':L' @code{size=-1}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Puts (@code{mglPoint} p, @code{mglPoint} d, @code{const char *}text, @code{const char *}fnt=@code{':L'}, @code{float} size=@code{-1})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Putsw (@code{mglPoint} p, @code{mglPoint} d, @code{const wchar_t *}text, @code{const char *}fnt=@code{':L'}, @code{float} size=@code{-1})
-@deftypefnx {C function} @code{void} mgl_puts_dir (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{float} dx, @code{float} dy, @code{float} dz, @code{const char *}text, @code{const char *}fnt, @code{float} size)
-@deftypefnx {C function} @code{void} mgl_putsw_dir (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{float} dx, @code{float} dy, @code{float} dz, @code{const wchar_t *}text, @code{const char *}fnt, @code{float} size)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Puts (@code{mglPoint} p, @code{mglPoint} d, @code{const char *}text, @code{const char *}fnt=@code{':L'}, @code{float} size=@code{-1})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Putsw (@code{mglPoint} p, @code{mglPoint} d, @code{const wchar_t *}text, @code{const char *}fnt=@code{':L'}, @code{float} size=@code{-1})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_puts_dir (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{float} dx, @code{float} dy, @code{float} dz, @code{const char *}text, @code{const char *}fnt, @code{float} size)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_putsw_dir (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{float} dx, @code{float} dy, @code{float} dz, @code{const wchar_t *}text, @code{const char *}fnt, @code{float} size)
@end ifclear
ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ @var{text} ΠΎΡ ΡΠΎΡΠΊΠΈ @var{p} Π²Π΄ΠΎΠ»Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ @var{d}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{fnt} Π·Π°Π΄Π°Π΅Ρ ΡΡΠΈΠ»Ρ ΡΠ΅ΠΊΡΡΠ° ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π°Π΄ Π»ΠΈΠ½ΠΈΠ΅ΠΉ (@samp{T}) ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π½Π΅ΠΉ (@samp{t}).
@end deftypefn
ΠΡΠ²ΠΎΠ΄ΠΈΡ @var{n}-ΡΡ ΡΡΡΠΎΠΊΡ ΡΠ°ΠΉΠ»Π° @var{fname} ΠΎΡ ΡΠΎΡΠΊΠΈ @{@var{x},@var{y},@var{z}@} ΡΡΠΈΡΡΠΎΠΌ @var{fnt} ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{size}.
@end deftypefn
-@anchor{label}
-@deftypefn {MGL command} {} label @code{x y} 'text' ['fnt'='']
-@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{float} x, @code{float} y, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Labelw (@code{float} x, @code{float} y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {C function} @code{void} mgl_label_xy (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const char *}text, @code{const char *}fnt)
-@deftypefnx {C function} @code{void} mgl_labelw_xy (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const wchar_t *}text, @code{const char *}fnt)
-@end ifclear
-ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ @var{text} Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΊΡΠ°Π½Π° ΠΎΡ ΡΠΎΡΠΊΠΈ @{@var{x}, @var{y}@} ΡΡΠΈΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ @var{fnt}. ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @code{x, y} ΡΡΠΈΡΠ°ΡΡΡΡ Π»Π΅ΠΆΠ°ΡΠΈΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1].
-@end deftypefn
-
+@deftypefn {MGL command} {} text ydat 'text' ['fnt'='']
@deftypefnx {MGL command} {} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
@deftypefnx {MGL command} {} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}y, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
-@deftypefnx {C function} @code{void} mgl_text_y (@code{HMGL} gr, @code{HCDT} y, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
-@deftypefnx {C function} @code{void} mgl_textw_y (@code{HMGL} gr, @code{HCDT} y, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
-@deftypefnx {C function} @code{void} mgl_text_xy (@code{HCDT} x, @code{HCDT} y, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
-@deftypefnx {C function} @code{void} mgl_textw_xy (@code{HCDT} x, @code{HCDT} y, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
-@deftypefnx {C function} @code{void} mgl_text_xyz (@code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
-@deftypefnx {C function} @code{void} mgl_textw_xyz (@code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}y, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Text (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const wchar_t *}text, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_text_y (@code{HMGL} gr, @code{HCDT} y, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textw_y (@code{HMGL} gr, @code{HCDT} y, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_text_xy (@code{HCDT} x, @code{HCDT} y, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textw_xy (@code{HCDT} x, @code{HCDT} y, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_text_xyz (@code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}text, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textw_xyz (@code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const wchar_t *}text, @code{const char *}fnt, @code{const char *}opt)
@end ifclear
-ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ @var{text} Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{x}[i], @var{y}[i], @var{z}[i]@} ΡΡΠΈΡΡΠΎΠΌ @var{fnt}. Π‘ΡΡΠΎΠΊΠ° @var{fnt} ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: @samp{t} Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ΄ ΠΊΡΠΈΠ²ΠΎΠΉ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), ΠΈΠ»ΠΈ @samp{T} Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π°Π΄ ΠΊΡΠΈΠ²ΠΎΠΉ. Π Π°Π·ΠΌΠ΅ΡΡ ΠΏΠΎ 1-ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{x} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ "Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ" ΠΌΠ°ΡΡΠΈΠ² ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [@var{Min}.x, @var{Max}.x] (@pxref{Ranges (bounding box)}). ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{z} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @var{z}[i] = @var{Min}.z. Π‘ΡΡΠΎΠΊΠ° @var{opt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (@pxref{Command options}). @sref{Text sample}
+ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ @var{text} Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{x}[i], @var{y}[i], @var{z}[i]@} ΡΡΠΈΡΡΠΎΠΌ @var{fnt}. Π‘ΡΡΠΎΠΊΠ° @var{fnt} ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: @samp{t} Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ΄ ΠΊΡΠΈΠ²ΠΎΠΉ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), ΠΈΠ»ΠΈ @samp{T} Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π°Π΄ ΠΊΡΠΈΠ²ΠΎΠΉ. Π Π°Π·ΠΌΠ΅ΡΡ ΠΏΠΎ 1-ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{x} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ "Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ" ΠΌΠ°ΡΡΠΈΠ² ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [@var{Min}.x, @var{Max}.x] (ΡΠΌ. @ref{Ranges (bounding box)}). ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² @var{z} Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @var{z}[i] = @var{Min}.z. Π‘ΡΡΠΎΠΊΠ° @var{opt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΠΌ. @ref{Command options}). @sref{Text sample}
@end deftypefn
@c ##################################################################
@cindex Colorbar
@cindex Label
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ "ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ" ΡΠΈΠΏΠ° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ (colorbar), ΡΠ΅ΡΠΊΡ ΠΏΠΎ ΠΎΡΡΠΌ, ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΏΠΎ ΠΎΡΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @pxref{Axis settings}.
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ "ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ" ΡΠΈΠΏΠ° ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ (colorbar), ΡΠ΅ΡΠΊΡ ΠΏΠΎ ΠΎΡΡΠΌ, ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΏΠΎ ΠΎΡΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠΌ. @ref{Axis settings}.
@anchor{axis}
-@deftypefn {MGL command} {} axis ['dir'='xyz' @code{adjust=off}]
+@deftypefn {MGL command} {} axis ['dir'='xyz' 'stl'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Axis (@code{const char *}dir=@code{"xyz"}, @code{bool} adjust=@code{false})
-@deftypefnx {C function} @code{void} mgl_axis (@code{HMGL} gr, @code{const char *}dir, @code{int} adjust)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Axis (@code{const char *}dir=@code{"xyz"}, @code{const char *}stl=@code{""})
+@deftypefnx {C function} @code{void} mgl_axis (@code{HMGL} gr, @code{const char *}dir, @code{const char *}stl)
@end ifclear
-Π ΠΈΡΡΠ΅Ρ ΠΎΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΠΌΠ΅ΡΠΊΠΈ Π½Π° Π½ΠΈΡ
(@pxref{Axis settings}) Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΡΡΠΎΠΊΠΎΠΉ @var{dir}. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{_}, ΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ. Π¨ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ @code{SetFontDef()} (@pxref{Font settings}). ΠΠ΅ΡΠΊΠΈ Π±ΡΠ΄ΡΡ "ΠΏΠΎΠ΄ΠΎΠ³Π½Π°Π½Ρ" Π΅ΡΠ»ΠΈ @var{adjust}=@code{true} (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ @code{AdjustTicks()}).
+Π ΠΈΡΡΠ΅Ρ ΠΎΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΠΌΠ΅ΡΠΊΠΈ Π½Π° Π½ΠΈΡ
(ΡΠΌ. @ref{Axis settings}) Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
@samp{xyz}, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΡΡΠΎΠΊΠΎΠΉ @var{dir}. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{_}, ΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{AKDTVISO}, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΡΡΡΠ΅Π»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ ΠΎΡΠΈ. Π‘ΡΠΈΠ»Ρ ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΎΡΠΈ(Π΅ΠΉ) Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ @var{stl}. @sref{Axis and ticks}
@end deftypefn
@anchor{colorbar}
-@deftypefn {MGL command} {} colorbar ['sch'='' @code{pos=0}]
+@deftypefn {MGL command} {} colorbar ['sch'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{int} pos=@code{0})
-@deftypefnx {C function} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{int} pos)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch)
@end ifclear
-ΓΒ ΓΒΈΓ\81Γ\83ΓΒ΅Γ\82 ΓΒΏΓΒΎΓΒ»ΓΒΎΓ\81Γ\83 Γ\81ΓΒΎΓΒΎΓ\82ΓΒ²ΓΒ΅Γ\82Γ\81Γ\82ΓΒ²ΓΒΈΓ\8f Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒ° ΓΒΈ Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎΓΒ²Γ\8bΓ\85 ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒΉ (colorbar) ΓΒ΄ΓΒ»Γ\8f Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒΎΓΒ²ΓΒΎΓΒΉ Γ\81Γ\85ΓΒ΅ΓΒΌΓ\8b @var{sch} (ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82Γ\81Γ\8f Γ\82ΓΒ΅ΓΒΊΓ\83Γ\89ΓΒ°Γ\8f ΓΒ΄ΓΒ»Γ\8f @code{sch=""}) Γ\81 ΓΒΊΓ\80ΓΒ°Γ\8e ΓΒΎΓ\82 ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°. Γ\9fΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80 @var{pos} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 ΓΒΌΓΒ΅Γ\81Γ\82ΓΒΎΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅: @samp{0} - Γ\81ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒ° (ΓΒΏΓΒΎ Γ\83ΓΒΌΓΒΎΓΒ»Γ\87ΓΒ°ΓΒ½ΓΒΈΓ\8e), @samp{1} - Γ\81ΓΒ»ΓΒ΅ΓΒ²ΓΒ°, @samp{2} - Γ\81ΓΒ²ΓΒ΅Γ\80Γ\85Γ\83, @samp{3} - Γ\81ΓΒ½ΓΒΈΓΒ·Γ\83. Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° @var{sch} Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 @samp{<>^_}, Γ\82ΓΒΎ ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80 @var{pos} ΓΒΎΓΒΏΓ\80ΓΒ΅ΓΒ΄ΓΒ΅ΓΒ»Γ\8fΓΒ΅Γ\82Γ\81Γ\8f ΓΒΊΓΒ°ΓΒΊ: @code{pos=0} ΓΒ΄ΓΒ»Γ\8f @samp{>} (Γ\81ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒ°), @code{pos=1} ΓΒ΄ΓΒ»Γ\8f @samp{<} (Γ\81ΓΒ»ΓΒ΅ΓΒ²ΓΒ°), @code{pos=2} ΓΒ΄ΓΒ»Γ\8f @samp{^} (Γ\81ΓΒ²ΓΒ΅Γ\80Γ\85Γ\83), @code{pos=3} ΓΒ΄ΓΒ»Γ\8f @samp{_} (Γ\81ΓΒ½ΓΒΈΓΒ·Γ\83). Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 @samp{A}, Γ\82ΓΒΎ ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83Γ\8eΓ\82Γ\81Γ\8f ΓΒ°ΓΒ±Γ\81ΓΒΎΓΒ»Γ\8eΓ\82ΓΒ½Γ\8bΓΒ΅ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b (ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ Γ\80ΓΒΈΓ\81Γ\83ΓΒ½ΓΒΊΓΒ°). @sref{Dens sample}
+ΓΒ ΓΒΈΓ\81Γ\83ΓΒ΅Γ\82 ΓΒΏΓΒΎΓΒ»ΓΒΎΓ\81Γ\83 Γ\81ΓΒΎΓΒΎΓ\82ΓΒ²ΓΒ΅Γ\82Γ\81Γ\82ΓΒ²ΓΒΈΓ\8f Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒ° ΓΒΈ Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎΓΒ²Γ\8bΓ\85 ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒΉ (colorbar) ΓΒ΄ΓΒ»Γ\8f Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒΎΓΒ²ΓΒΎΓΒΉ Γ\81Γ\85ΓΒ΅ΓΒΌΓ\8b @var{sch} (ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82Γ\81Γ\8f Γ\82ΓΒ΅ΓΒΊΓ\83Γ\89ΓΒ°Γ\8f ΓΒ΄ΓΒ»Γ\8f @code{sch=""}) Γ\81 ΓΒΊΓ\80ΓΒ°Γ\8e ΓΒΎΓ\82 ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒ°. Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° @var{sch} Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 @samp{<>^_}, Γ\82ΓΒΎ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒ΅ΓΒ½ΓΒΈΓΒ΅ ΓΒ²Γ\8bΓΒ±ΓΒΈΓ\80ΓΒ°ΓΒ΅Γ\82Γ\81Γ\8f: @samp{>} -- Γ\81ΓΒΏΓ\80ΓΒ°ΓΒ²ΓΒ°, @samp{<} -- Γ\81ΓΒ»ΓΒ΅ΓΒ²ΓΒ°, @samp{^} -- Γ\81ΓΒ²ΓΒ΅Γ\80Γ\85Γ\83, @samp{_} -- Γ\81ΓΒ½ΓΒΈΓΒ·Γ\83. Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 @samp{A}, Γ\82ΓΒΎ ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83Γ\8eΓ\82Γ\81Γ\8f ΓΒ°ΓΒ±Γ\81ΓΒΎΓΒ»Γ\8eΓ\82ΓΒ½Γ\8bΓΒ΅ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82Γ\8b (ΓΒΎΓ\82ΓΒ½ΓΒΎΓ\81ΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎ Γ\80ΓΒΈΓ\81Γ\83ΓΒ½ΓΒΊΓΒ°). @sref{Colorbars}
@end deftypefn
-@deftypefn {MGL command} {} colorbar vdat ['sch'='' @code{pos=0}]
+@deftypefn {MGL command} {} colorbar vdat ['sch'='']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""}, @code{int} pos=@code{0})
-@deftypefnx {C function} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{int} pos)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch)
@end ifclear
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ, Π½ΠΎ Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ
Π΅ΠΌΡ Π±Π΅Π· ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ @var{v}. @sref{ContD sample}
@end deftypefn
-@deftypefn {MGL command} {} colorbar 'sch' @code{pos x y w h}
+@deftypefn {MGL command} {} colorbar 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{int} pos, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
-@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{int} pos, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
-@deftypefnx {C function} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{int} pos, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const char *}sch, @code{float} x, @code{float} y, @code{float} w=@code{1}, @code{float} h=@code{1})
+@deftypefnx {C function} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
@end ifclear
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ, Π½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° @{@var{x}, @var{y}@} (ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1]). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ @var{w}, @var{h} Π·Π°Π΄Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ colorbar.
@end deftypefn
+@deftypefn {MGL command} {} colorbar vdat 'sch' @code{x y [w=1 h=1]}
@ifclear UDAV
-@deftypefn {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch, @code{int} pos, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
-@deftypefnx {C function} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{int} pos, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+@deftypefnx {Method on @code{mglGraph}} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch, @code{float} x, @code{float} y, @code{float} w=@code{1}, @code{float} h=@code{1})
+@deftypefnx {C function} @code{void} mgl_colorbar_val_ext (@code{HMGL} gr, @code{HCDT} v, @code{const char *}sch, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+@end ifclear
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ, Π½ΠΎ Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ
Π΅ΠΌΡ Π±Π΅Π· ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ @var{v}.
@end deftypefn
-@end ifclear
@anchor{grid}
@deftypefn {MGL command} {} grid ['dir'='xyz' 'pen'='B']
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Grid (@code{const char *}dir=@code{"xyz"}, @code{const char *}pen=@code{"B"})
-@deftypefnx {C function} @code{void} mgl_axis_grid (@code{HMGL} gr, @code{const char *}dir, @code{const char *}pen)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grid (@code{const char *}dir=@code{"xyz"}, @code{const char *}pen=@code{"B"})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_axis_grid (@code{HMGL} gr, @code{const char *}dir, @code{const char *}pen)
@end ifclear
Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ ΡΠ΅ΡΠΊΠΈ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½ΡΠΌ @var{dir}. Π¨Π°Π³ ΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ ΠΌΠ΅ΡΠΎΠΊ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ @var{pen} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ -- ΡΠΏΠ»ΠΎΡΠ½Π°Ρ ΡΠ΅ΠΌΠ½ΠΎ ΡΠΈΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ @samp{B-}).
@end deftypefn
@anchor{box}
@deftypefn {MGL command} {} box ['stl'='k' @code{ticks=on}]
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} Box (@code{const char *}col=@code{""}, @code{bool} ticks=@code{true})
-@deftypefnx {C function} @code{void} mgl_box (@code{HMGL} gr, @code{int} ticks)
-@deftypefnx {C function} @code{void} mgl_box_str (@code{HMGL} gr, @code{const char *}col, @code{int} ticks)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Box (@code{const char *}col=@code{""}, @code{bool} ticks=@code{true})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_box (@code{HMGL} gr, @code{int} ticks)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_box_str (@code{HMGL} gr, @code{const char *}col, @code{int} ticks)
@end ifclear
-Π ΠΈΡΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄ ΡΠ²Π΅ΡΠΎΠΌ @var{col}.
+Π ΠΈΡΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄ ΡΠ²Π΅ΡΠΎΠΌ @var{col}. ΠΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{@@}, ΡΠΎ ΡΠΈΡΡΡΡΡΡ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π·Π°Π΄Π½ΠΈΠ΅ Π³ΡΠ°Π½ΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ²Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π³ΡΠ°Π½Π΅ΠΉ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π΅ΡΠ»ΠΎ ΠΆΡΠ»ΡΡΠΉ), Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄Π»Ρ ΡΡΠ±Π΅Ρ ΠΈ ΠΌΠ΅ΡΠΎΠΊ.
@end deftypefn
@anchor{xlabel}
@cindex SetLegendBox
@cindex SetLegendMarks
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ Π³ΡΠ°ΡΠΈΠΊΠ° (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ @ref{1D plotting}). ΠΠ°ΠΏΠΈΡΡ Π² Π»Π΅Π³Π΅Π½Π΄Π΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ
ΡΡΡΠΎΠΊ: ΠΎΠ΄Π½Π° Π΄Π»Ρ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ², Π΄ΡΡΠ³Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ TeX-ΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΡΡΠΎΠΊ, ΠΈΠ»ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ AddLegend() Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ @var{fnt} ΠΈ @var{size} Π·Π°Π΄Π°ΡΡ ΡΡΠΈΠ»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° (@pxref{Font settings}). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{llen} Π·Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π»ΠΈΠ½ΠΈΠΈ. ΠΠ»ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΡΡΠΎΠΉ, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΎΡΡΡΡΠΏΠ°. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{fnt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{A}, ΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π»Π΅Π³Π΅Π½Π΄Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ (Π° Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ subplot). ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{fnt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²ΠΎΠΊΡΡΠ³ Π»Π΅Π³Π΅Π½Π΄Ρ. @sref{Legend sample}
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ Π³ΡΠ°ΡΠΈΠΊΠ° (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ @ref{1D plotting}). ΠΠ°ΠΏΠΈΡΡ Π² Π»Π΅Π³Π΅Π½Π΄Π΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ
ΡΡΡΠΎΠΊ: ΠΎΠ΄Π½Π° Π΄Π»Ρ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ², Π΄ΡΡΠ³Π°Ρ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Ρ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ TeX-ΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΡΡΠΎΠΊ, ΠΈΠ»ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ AddLegend() Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ @var{fnt} ΠΈ @var{size} Π·Π°Π΄Π°ΡΡ ΡΡΠΈΠ»Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠΈΡΡΠ° (ΡΠΌ. @ref{Font settings}). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{llen} Π·Π°Π΄Π°Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π»ΠΈΠ½ΠΈΠΈ. ΠΠ»ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΏΡΡΡΠΎΠΉ, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΎΡΡΡΡΠΏΠ°. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{fnt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{A}, ΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π»Π΅Π³Π΅Π½Π΄Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ (Π° Π½Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ subplot). ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{fnt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²ΠΎΠΊΡΡΠ³ Π»Π΅Π³Π΅Π½Π΄Ρ. @sref{Legend sample}
@anchor{legend}
@deftypefn {MGL command} {} legend [@code{pos=3} 'fnt'='#' @code{size=-0.8 llen=0.1}]
@deftypefnx {Method on @code{mglGraph}} @code{void} Legend (@code{int} pos=@code{0x3}, @code{const char *}fnt=@code{"#"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@deftypefnx {C function} @code{void} mgl_legend (@code{HMGL} gr, @code{int} pos, @code{const char *}fnt, @code{float} size, @code{float} llen)
@end ifclear
-Π ΠΈΡΡΠ΅Ρ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΈΠ· Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΡΠΈΡΡΠΎΠΌ @var{fnt} ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{size}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{pos} Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ: @samp{0} -- Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{1} -- Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{2} -- Π²Π΅ΡΡ
Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{3} -- Π²Π΅ΡΡ
Π½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
+Π ΠΈΡΡΠ΅Ρ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΈΠ· Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΡΠΈΡΡΠΎΠΌ @var{fnt} ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{size}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{pos} Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ: @samp{0} -- Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{1} -- Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{2} -- Π²Π΅ΡΡ
Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ, @samp{3} -- Π²Π΅ΡΡ
Π½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). Π‘ΡΡΠΎΠΊΠ° @var{fnt} ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²Π΅Ρ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° (1-ΡΠΉ ΡΠ²Π΅Ρ), Π΄Π»Ρ Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡΡ (2-ΠΎΠΉ ΡΠ²Π΅Ρ) ΠΈ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ° (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ). ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ 3 ΡΠ²Π΅ΡΠΎΠ², ΡΠΎ ΡΠ²Π΅Ρ ΡΡΠ±Π΅Ρ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ½ΡΠΌ (2 ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ²Π΅ΡΠ°), Π° ΡΠ²Π΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π±Π΅Π»ΡΠΌ (1 ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ²Π΅ΡΠ°). ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{fnt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}.
@end deftypefn
@deftypefn {MGL command} {} legend @code{x y} ['fnt'='#' @code{size=-1 llen=0.1}]
@ifclear UDAV
@deftypefnx {Method on @code{mglGraph}} @code{void} Legend (@code{float} x, @code{float} y, @code{const char *}fnt=@code{"#"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
-@deftypefnx {C function} @code{void} mgl_legend_xy (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const char *}fnt, @code{float} size, @code{float} llen)
+@deftypefnx {C function} @code{void} mgl_legend_pos (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const char *}fnt, @code{float} size, @code{float} llen)
@end ifclear
Π ΠΈΡΡΠ΅Ρ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΈΠ· Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΡΠΈΡΡΠΎΠΌ @var{fnt} ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{size}. ΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»Π΅Π³Π΅Π½Π΄Ρ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ @var{x}, @var{y}, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0,1].
@end deftypefn
@deftypefnx {C function} @code{void} mgl_add_legend (@code{HMGL} gr, @code{const char *}text, @code{const char *}style)
@deftypefnx {C function} @code{void} mgl_add_legendw (@code{HMGL} gr, @code{const wchar_t *}text, @code{const char *}style)
@end ifclear
-ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ @var{text} ΠΊΡΠΈΠ²ΠΎΠΉ ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ @var{style} (@pxref{Line styles}) Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π»Π΅Π³Π΅Π½Π΄Ρ.
+ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ @var{text} ΠΊΡΠΈΠ²ΠΎΠΉ ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ @var{style} (ΡΠΌ. @ref{Line styles}) Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π»Π΅Π³Π΅Π½Π΄Ρ.
@end deftypefn
@anchor{clearlegend}
@anchor{legendmarks}
@deftypefn {MGL command} {} legendmarks @code{val}
@ifclear UDAV
-@deftypefnx {Method on @code{mglGraph}} @code{void} SetLegendMarks (@code{int} num)
-@deftypefnx {C function} @code{void} mgl_set_legend_marks (@code{HMGL} gr, @code{int} num)
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} SetLegendMarks (@code{int} num)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_set_legend_marks (@code{HMGL} gr, @code{int} num)
@end ifclear
ΠΠ°Π΄Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Π² Π»Π΅Π³Π΅Π½Π΄Π΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 1 ΠΌΠ°ΡΠΊΠ΅Ρ.
@end deftypefn
@node 1D plotting, 2D plotting, Legend, MathGL core
@section 1D Π³ΡΠ°ΡΠΈΠΊΠΈ
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ
(1D) ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΠΈΠ½Π΄Π΅ΠΊΡΠ°) ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΡΠΈΠ²ΠΎΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ @{x(i),y(i),z(i)@}, i=1...n. ΠΡΡΡ 5 ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² 1D Π³ΡΠ°ΡΠΈΠΊΠΎΠ²: Π»ΠΈΠ½ΠΈΡ (Plot), Π»ΠΈΠ½ΠΈΡ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ (Area), ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ (Step), ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ (Bars, Barh) ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ (Stem). ΠΡΠ΅ ΡΡΠΈ ΡΠΈΠΏΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΡΡ Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π‘ΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ»ΠΈ ΠΎΠ½Π° ΡΠ°Π²Π½Π° "", ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΡΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ
Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Π²ΠΈΠ΄: ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ (Torus), Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° (Chart), ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ (Error), ΠΌΠ°ΡΠΊΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° (Mark), ΡΡΡΠ±ΠΊΠ°ΠΌΠΈ (Tube) ΠΈ Ρ.Π΄. @xref{Line styles}. @sref{1D plot sample}
-
-@menu
-* Plot::
-* Radar::
-* Tens::
-* Area::
-* Region::
-* Stem::
-* Bars::
-* Barh::
-* Chart::
-* Step::
-* Torus::
-* Tube::
-* Mark::
-* TextMark::
-* Error::
-* BoxPlot::
-@end menu
-
-@c ==================================================================
-@node Plot, Radar, , 1D plotting
-@subsection Plot
@cindex Plot
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Area}, @ref{Step}, @ref{Stem}, @ref{Tube}, @ref{Mark}, @ref{Error}, @ref{Belt}, @ref{Tens}. @sref{Plot sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_plot_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@}.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_plot_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Plot (@code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_plot (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
-
-@c ==================================================================
-@node Radar, Tens, Plot, 1D plotting
-@subsection Radar
@cindex Radar
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Radar (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} r=@code{-1})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_radar (@code{HMGL} gr, @code{const HMDT} a, @code{const char *}pen, @code{float} r)
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ radar chart, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π½Π° ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΡ
Π»ΠΈΠ½ΠΈΡΡ
(ΡΠΈΠΏΠ° Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ Π² ΠΏΠΎΠ»ΡΡΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
). ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{r} Π·Π°Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π΄Π°Π½Π½ΡΡ
(Ρ.Π΅. ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @var{a}+@var{r} Π²ΠΌΠ΅ΡΡΠΎ @var{a}). ΠΡΠ»ΠΈ @code{r<0}, ΡΠΎ @code{r=max(0, -min(a)}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). ΠΡΠ»ΠΈ @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{#}, ΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΡΡΠ΅ΡΡΡ "ΡΠ΅ΡΠΊΠ°" (ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΊΡΡΠ³ Π΄Π»Ρ @var{r}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}. @sref{Radar sample}
-@end deftypefn
-
-@c ==================================================================
-@node Tens, Area, Radar, 1D plotting
-@subsection Tens
@cindex Tens
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ Ρ ΡΠ²Π΅ΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ @var{c} (ΡΠΈΠΏΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΉ). ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx=c.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ (@pxref{Color scheme}) ΠΈ ΡΡΠΈΠ»Ρ ΠΈ/ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ
Π΅ΠΌΠΎΠΉ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Mesh}, @ref{Fall}. @sref{Tens sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tens_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@} Ρ ΡΠ²Π΅ΡΠΎΠΌ @var{c}[i].
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}c, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tens_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} c, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}) Ρ ΡΠ²Π΅ΡΠΎΠΌ @var{c}[i].
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tens (@code{const mglData &}y, @code{const mglData &}c, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tens (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} c, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}) Ρ ΡΠ²Π΅ΡΠΎΠΌ @var{c}[i], Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
-
-@c ==================================================================
-@node Area, Region, Tens, 1D plotting
-@subsection Area
@cindex Area
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ΅ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{a}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ (Ρ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) -- ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ @code{y.CumSum("y");} ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΡΠΈΠΊΠ°. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Bars}, @ref{Stem}. @sref{Area sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_area_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@} ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π²Π½ΠΈΠ· Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = Org.z.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_area_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}) ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π΄ΠΎ ΠΏΡΡΠΌΠΎΠΉ @var{y} = Org.y.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Area (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{bool} sum=@code{false})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_area (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_area_s (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}) ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π΅ Π΄ΠΎ ΠΏΡΡΠΌΠΎΠΉ @var{y} = Org.y, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x]. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{sum} Π·Π°Π΄Π°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ (Ρ ΡΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ). ΠΠ°ΠΌΠ΅ΡΡ, ΡΡΠΎ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ @code{y.CumSum("y");} ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΡΠΈΠΊΠ°.
-@end deftypefn
-
-@c ==================================================================
-@node Region, Stem, Area, 1D plotting
-@subsection Region
@cindex Region
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ 2 ΠΊΡΠΈΠ²ΡΠΌΠΈ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y1.nx=y2.nx} ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{y1}, @var{y2} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ²Π΅Ρ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ΅ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Area}, @ref{Bars}, @ref{Stem}. @sref{Region sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Region (@code{const mglData &}x, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_region_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y1, @code{const HMDT} y2, @code{const char *}pen, @code{int} inside)
-ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΠΈΠ²ΡΠΌΠΈ @{@var{x}[i], @var{y1}[i]@} ΠΈ @{@var{x}[i], @var{y2}[i]@} ΠΏΡΠΈ z=@var{zVal}. ΠΡΠΈ @code{inside=off} Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΡ y1<y<y2, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π° ΠΎΠ±Π»Π°ΡΡΡ y2<y<y1.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Region (@code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_region (@code{HMGL} gr, @code{const HMDT} y1, @code{const HMDT} y2, @code{const char *}pen, @code{int} inside)
-ΠΠ°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΠΈΠ²ΡΠΌΠΈ @{@var{x}[i], @var{y1}[i]@} ΠΈ @{@var{x}[i], @var{y2}[i]@} ΠΏΡΠΈ z=@var{zVal}, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
-
-@c ==================================================================
-@node Stem, Bars, Region, 1D plotting
-@subsection Stem
@cindex Stem
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Area}, @ref{Bars}, @ref{Plot}, @ref{Mark}. @sref{Stem sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_stem_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@} Π²Π½ΠΈΠ· Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = Org.z.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_stem_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π΄ΠΎ @var{y} = Org.y Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Stem (@code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_stem (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π΄ΠΎ @var{y} = Org.y Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
-
-@c ==================================================================
-@node Bars, Barh, Stem, 1D plotting
-@subsection Bars
@cindex Bars
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ) ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{a}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{f}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠΈΠΏΠ° waterfall Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Barh}, @ref{Area}, @ref{Stem}, @ref{Chart}, @ref{Default sizes}. @sref{Bars sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_bars_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@} Π²Π½ΠΈΠ· Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = Org.z.
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_bars_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π΄ΠΎ @var{y} = Org.y Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Bars (@code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_bars (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π΄ΠΎ @var{y} = Org.y Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
-
-@c ==================================================================
-@node Barh, Chart, Bars, 1D plotting
-@subsection Barh
@cindex Barh
+@cindex Chart
+@cindex Step
+@cindex Torus
+@cindex Tube
+@cindex Mark
+@cindex TextMark
+@cindex Error
+@cindex BoxPlot
+@cindex Candle
+@cindex Tape
+@cindex Label
+@cindex Cones
-ΓΒ€Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓΒΈ Γ\80ΓΒΈΓ\81Γ\83Γ\8eΓ\82 ΓΒ³ΓΒΎΓ\80ΓΒΈΓΒ·ΓΒΎΓΒ½Γ\82ΓΒ°ΓΒ»Γ\8cΓΒ½Γ\8bΓΒ΅ ΓΒΏΓΒΎΓΒ»ΓΒΎΓ\81Γ\8b (ΓΒΏΓ\80Γ\8fΓΒΌΓΒΎΓ\83ΓΒ³ΓΒΎΓΒ»Γ\8cΓΒ½ΓΒΈΓΒΊΓΒΈ) ΓΒΈΓΒ· Γ\82ΓΒΎΓ\87ΓΒ΅ΓΒΊ ΓΒ΄ΓΒΎ ΓΒΏΓΒ»ΓΒΎΓ\81ΓΒΊΓΒΎΓ\81Γ\82ΓΒΈ ΓΒΎΓ\81ΓΒ΅ΓΒΉ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82. Γ\93Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊ Γ\80ΓΒΈΓ\81Γ\83ΓΒ΅Γ\82Γ\81Γ\8f ΓΒ΄ΓΒ»Γ\8f ΓΒΊΓΒ°ΓΒΆΓΒ΄ΓΒΎΓΒΉ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒΈ ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΎΓΒ΄ΓΒΈΓΒ½ ΓΒΈΓΒ· ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²ΓΒΎΓΒ² ΓΒΌΓΒ°Γ\82Γ\80ΓΒΈΓ\86ΓΒ°. ΓΒ ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80 ΓΒΏΓΒΎ 1-ΓΒΎΓΒΉ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82ΓΒ΅ @strong{ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ΅ΓΒ½ ΓΒ±Γ\8bΓ\82Γ\8c ΓΒΎΓΒ΄ΓΒΈΓΒ½ΓΒ°ΓΒΊΓΒΎΓΒ²} ΓΒ΄ΓΒ»Γ\8f ΓΒ²Γ\81ΓΒ΅Γ\85 ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²ΓΒΎΓΒ² @code{x.nx=y.nx=z.nx}. ΓΒ‘Γ\82Γ\80ΓΒΎΓΒΊΓΒ° @var{pen} ΓΒ·ΓΒ°ΓΒ΄ΓΒ°ΓΒ΅Γ\82 Γ\86ΓΒ²ΓΒ΅Γ\82 ΓΒΈ Γ\81Γ\82ΓΒΈΓΒ»Γ\8c ΓΒ»ΓΒΈΓΒ½ΓΒΈΓΒΈ ΓΒΈ ΓΒΌΓΒ°Γ\80ΓΒΊΓΒ΅Γ\80ΓΒΎΓΒ² (@pxref{Line styles}). Γ\9fΓΒΎ Γ\83ΓΒΌΓΒΎΓΒ»Γ\87ΓΒ°ΓΒ½ΓΒΈΓ\8e (@code{pen=""}) ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·Γ\83ΓΒ΅Γ\82Γ\81Γ\8f Γ\81ΓΒΏΓΒ»ΓΒΎΓ\88ΓΒ½ΓΒ°Γ\8f ΓΒ»ΓΒΈΓΒ½ΓΒΈΓ\8f Γ\81 Γ\82ΓΒ΅ΓΒΊΓ\83Γ\89ΓΒΈΓΒΌ Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒΎΓΒΌ ΓΒΈΓΒ· ΓΒΏΓΒ°ΓΒ»ΓΒΈΓ\82Γ\80Γ\8b (@pxref{Palette and colors}). Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 Γ\81ΓΒΈΓΒΌΓΒ²ΓΒΎΓΒ» @samp{a}, Γ\82ΓΒΎ ΓΒ»ΓΒΈΓΒ½ΓΒΈΓΒΈ Γ\80ΓΒΈΓ\81Γ\83Γ\8eΓ\82Γ\81Γ\8f ΓΒΎΓΒ΄ΓΒ½ΓΒ° ΓΒΏΓΒΎΓΒ²ΓΒ΅Γ\80Γ\85 ΓΒ΄Γ\80Γ\83ΓΒ³ΓΒΎΓΒΉ. Γ\95Γ\81ΓΒ»ΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒ° Γ\81ΓΒΎΓΒ΄ΓΒ΅Γ\80ΓΒΆΓΒΈΓ\82 Γ\81ΓΒΈΓΒΌΓΒ²ΓΒΎΓΒ» @samp{f}, Γ\82ΓΒΎ Γ\80ΓΒΈΓ\81Γ\83ΓΒ΅Γ\82Γ\81Γ\8f ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊ Γ\82ΓΒΈΓΒΏΓΒ° waterfall ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓΒΏΓ\80ΓΒ΅ΓΒ΄ΓΒ΅ΓΒ»ΓΒ΅ΓΒ½ΓΒΈΓ\8f ΓΒΊΓ\83ΓΒΌΓ\83ΓΒ»Γ\8fΓ\82ΓΒΈΓΒ²ΓΒ½ΓΒΎΓΒ³ΓΒΎ Γ\8dΓ\84Γ\84ΓΒ΅ΓΒΊΓ\82ΓΒ° ΓΒΏΓΒΎΓ\81ΓΒ»ΓΒ΅ΓΒ΄ΓΒΎΓΒ²ΓΒ°Γ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½ΓΒΎΓ\81Γ\82ΓΒΈ ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒΈ ΓΒΎΓ\82Γ\80ΓΒΈΓ\86ΓΒ°Γ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒΉ. Γ\9cΓΒΎΓΒΆΓΒ½ΓΒΎ ΓΒΈΓ\81ΓΒΏΓΒΎΓΒ»Γ\8cΓΒ·ΓΒΎΓΒ²ΓΒ°Γ\82Γ\8c Γ\80ΓΒ°ΓΒ·ΓΒ½Γ\8bΓΒ΅ Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒ° ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓΒ»ΓΒΎΓΒΆΓΒΈΓ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒΈ ΓΒΎΓ\82Γ\80ΓΒΈΓ\86ΓΒ°Γ\82ΓΒ΅ΓΒ»Γ\8cΓΒ½Γ\8bΓ\85 ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓΒΉ ΓΒ΅Γ\81ΓΒ»ΓΒΈ Γ\87ΓΒΈΓ\81ΓΒ»ΓΒΎ Γ\83ΓΒΊΓΒ°ΓΒ·ΓΒ°ΓΒ½ΓΒ½Γ\8bΓ\85 Γ\86ΓΒ²ΓΒ΅Γ\82ΓΒΎΓΒ² Γ\80ΓΒ°ΓΒ²ΓΒ½ΓΒΎ Γ\83ΓΒ΄ΓΒ²ΓΒΎΓΒ΅ΓΒ½ΓΒ½ΓΒΎΓΒΌΓ\83 Γ\87ΓΒΈΓ\81ΓΒ»Γ\83 ΓΒΊΓ\80ΓΒΈΓΒ²Γ\8bΓ\85 ΓΒ΄ΓΒ»Γ\8f ΓΒΏΓΒΎΓ\81Γ\82Γ\80ΓΒΎΓΒ΅ΓΒ½ΓΒΈΓ\8f. ΓΒ‘ΓΒΌ. Γ\82ΓΒ°ΓΒΊΓΒΆΓΒ΅ @ref{Barh}, @ref{Default sizes}. @sref{Barh sample}
+ΓΒΓ\82ΓΒΈ Γ\84Γ\83ΓΒ½ΓΒΊΓ\86ΓΒΈΓΒΈ Γ\81Γ\82Γ\80ΓΒΎΓ\8fΓ\82 ΓΒ³Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒΈ ΓΒ΄ΓΒ»Γ\8f ΓΒΎΓΒ΄ΓΒ½ΓΒΎΓΒΌΓΒ΅Γ\80ΓΒ½Γ\8bΓ\85 (1D) ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²ΓΒΎΓΒ². Γ\9eΓΒ΄ΓΒ½ΓΒΎΓΒΌΓΒ΅Γ\80ΓΒ½Γ\8bΓΒΌΓΒΈ Γ\81Γ\87ΓΒΈΓ\82ΓΒ°Γ\8eΓ\82Γ\81Γ\8f ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²Γ\8b, ΓΒ·ΓΒ°ΓΒ²ΓΒΈΓ\81Γ\8fΓ\89ΓΒΈΓΒ΅ Γ\82ΓΒΎΓΒ»Γ\8cΓΒΊΓΒΎ ΓΒΎΓ\82 ΓΒΎΓΒ΄ΓΒ½ΓΒΎΓΒ³ΓΒΎ ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80ΓΒ° (ΓΒΈΓΒ½ΓΒ΄ΓΒ΅ΓΒΊΓ\81ΓΒ°) ΓΒΏΓΒΎΓΒ΄ΓΒΎΓΒ±ΓΒ½ΓΒΎ ΓΒΊΓ\80ΓΒΈΓΒ²ΓΒΎΓΒΉ ΓΒ² ΓΒΏΓΒ°Γ\80ΓΒ°ΓΒΌΓΒ΅Γ\82Γ\80ΓΒΈΓ\87ΓΒ΅Γ\81ΓΒΊΓΒΎΓΒΉ Γ\84ΓΒΎΓ\80ΓΒΌΓΒ΅ @{x(i),y(i),z(i)@}, i=1...n. Γ\9fΓΒΎ Γ\83ΓΒΌΓΒΎΓΒ»Γ\87ΓΒ°ΓΒ½ΓΒΈΓ\8e (ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΎΓ\82Γ\81Γ\83Γ\82Γ\81Γ\82ΓΒ²Γ\83Γ\8eΓ\82) ΓΒ·ΓΒ½ΓΒ°Γ\87ΓΒ΅ΓΒ½ΓΒΈΓ\8f @var{x}[i] Γ\80ΓΒ°ΓΒ²ΓΒ½ΓΒΎ Γ\80ΓΒ°Γ\81ΓΒΏΓ\80ΓΒ΅ΓΒ΄ΓΒ΅ΓΒ»ΓΒ΅ΓΒ½Γ\8b ΓΒ² ΓΒ΄ΓΒΈΓΒ°ΓΒΏΓΒ°ΓΒ·ΓΒΎΓΒ½ΓΒ΅ ΓΒΎΓ\81ΓΒΈ Γ\85, ΓΒΈ @var{z}[i]=@var{Min}.z. Γ\93Γ\80ΓΒ°Γ\84ΓΒΈΓΒΊΓΒΈ Γ\80ΓΒΈΓ\81Γ\83Γ\8eΓ\82Γ\81Γ\8f ΓΒ΄ΓΒ»Γ\8f ΓΒΊΓΒ°ΓΒΆΓΒ΄ΓΒΎΓΒΉ Γ\81Γ\82Γ\80ΓΒΎΓΒΊΓΒΈ ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²ΓΒ° ΓΒ΄ΓΒ°ΓΒ½ΓΒ½Γ\8bΓ\85 ΓΒ΅Γ\81ΓΒ»ΓΒΈ ΓΒΎΓΒ½ ΓΒ΄ΓΒ²Γ\83ΓΒΌΓΒ΅Γ\80ΓΒ½Γ\8bΓΒΉ. ΓΒ ΓΒ°ΓΒ·ΓΒΌΓΒ΅Γ\80 ΓΒΏΓΒΎ 1-ΓΒΎΓΒΉ ΓΒΊΓΒΎΓΒΎΓ\80ΓΒ΄ΓΒΈΓΒ½ΓΒ°Γ\82ΓΒ΅ @strong{ΓΒ΄ΓΒΎΓΒ»ΓΒΆΓΒ΅ΓΒ½ ΓΒ±Γ\8bΓ\82Γ\8c ΓΒΎΓΒ΄ΓΒΈΓΒ½ΓΒ°ΓΒΊΓΒΎΓΒ²} ΓΒ΄ΓΒ»Γ\8f ΓΒ²Γ\81ΓΒ΅Γ\85 ΓΒΌΓΒ°Γ\81Γ\81ΓΒΈΓΒ²ΓΒΎΓΒ² @code{x.nx=y.nx=z.nx}.
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Barh (@code{const mglData &}y, @code{const mglData &}v, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_barh_xy (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} v, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{v}[i], @var{y}[i]@} Π΄ΠΎ @var{x} = Org.x Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
-@end deftypefn
+Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (ΡΠΌ. @ref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (ΡΠΌ. @ref{Palette and colors}). Π‘ΠΈΠΌΠ²ΠΎΠ» @samp{!} Π² ΡΡΡΠΎΠΊΠ΅ Π·Π°Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ
(Π½Π΅ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΠΊΡΠΈΠ²ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). Π‘ΡΡΠΎΠΊΠ° @var{opt} Π·Π°Π΄Π°Π΅Ρ ΠΎΠΏΡΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @ref{Command options}). @sref{1D samples}
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Barh (@code{const mglData &}v, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_barh (@code{HMGL} gr, @code{const HMDT} v, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ @{@var{v}[i], @var{y}[i]@} Π΄ΠΎ @var{x} = Org.x Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{y}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.y, @var{Max}.y].
+@anchor{plot}
+@deftypefn {MGL command} {} plot ydat ['stl'='']
+@deftypefnx {MGL command} {} plot xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} plot xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Plot (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_plot (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_plot_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_plot_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{area}, @ref{step}, @ref{stem}, @ref{tube}, @ref{mark}, @ref{error}, @ref{belt}, @ref{tens}, @ref{tape}. @sref{Plot sample}
@end deftypefn
-@c ==================================================================
-@node Chart, Step, Barh, 1D plotting
-@subsection Chart
-@cindex Chart
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Chart (@code{const mglData &}a, @code{const char *}col=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_chart (@code{HMGL} gr, @code{const HMDT} a, @code{const char *}col)
-Π ΠΈΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (ΠΏΠΎΡΡΠ°) Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΡΡ
@var{a}. Π§ΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΡ ΡΠ°Π²Π½ΠΎ ΡΠΈΡΠ»Ρ ΡΡΡΠΎΠΊ @var{a} (ΡΠ°Π²Π½ΠΎ @var{a.ny}). Π¦Π²Π΅Ρ ΠΏΠΎΠ»ΠΎΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ²Π΅ΡΠΎΠ² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π² @var{col} ΠΈΠ»ΠΈ Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ (@pxref{Palette and colors}). ΠΡΠΎΠ±Π΅Π» Π² ΡΠ²Π΅ΡΠ°Ρ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΌΡ "ΡΠ²Π΅ΡΡ", Ρ.Π΅. Π΅ΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠ±Π΅Π»(Ρ), ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΠΎΡΠ° Π½Π΅ ΡΠΈΡΡΠ΅ΡΡΡ. Π¨ΠΈΡΠΈΠ½Π° ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² @var{a}. ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ½Π°Ρ Π³ΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΠ»ΠΎΡ. ΠΡΠ°ΡΠΈΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΡΡΡΠ΅ Π² (ΠΏΠΎΡΠ»Π΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ) ΠΈ/ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ»ΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Pie chart). @sref{Chart sample}
+@anchor{radar}
+@deftypefn {MGL command} {} radar adat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Radar (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_radar (@code{HMGL} gr, @code{HCDT} a, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ radar chart, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Ρ Π²Π΅ΡΡΠΈΠ½Π°ΠΌΠΈ Π½Π° ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΡ
Π»ΠΈΠ½ΠΈΡΡ
(ΡΠΈΠΏΠ° Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ Π² ΠΏΠΎΠ»ΡΡΠ½ΡΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ
). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} Π·Π°Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π΄Π°Π½Π½ΡΡ
(Ρ.Π΅. ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ @var{a}+@var{value} Π²ΠΌΠ΅ΡΡΠΎ @var{a}). ΠΡΠ»ΠΈ @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ "ΡΠ΅ΡΠΊΠ°" (ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}. @sref{Radar sample}
@end deftypefn
-
-@c ==================================================================
-@node Step, Torus, Chart, 1D plotting
-@subsection Step
-@cindex Step
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Stem}, @ref{Tile}, @ref{Boxs}. @sref{Step sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_step_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@}.
+@anchor{step}
+@deftypefn {MGL command} {} step ydat ['stl'='']
+@deftypefnx {MGL command} {} step xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} step xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Step (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_step (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_step_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_step_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{stem}, @ref{tile}, @ref{boxs}. @sref{Step sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_step_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
+@anchor{tens}
+@deftypefn {MGL command} {} tens ydat cdat ['stl'='']
+@deftypefnx {MGL command} {} tens xdat ydat cdat ['stl'='']
+@deftypefnx {MGL command} {} tens xdat ydat zdat cdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tens (@code{const mglData &}y, @code{const mglData &}c, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}c, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_tens (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tens_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tens_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} c, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ Ρ ΡΠ²Π΅ΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ @var{c} (ΡΠΈΠΏΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΉ). Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ (ΡΠΌ. @ref{Color scheme}) ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΉ ΠΈ/ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (ΡΠΌ. @ref{Line styles}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{mesh}, @ref{fall}. @sref{Tens sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Step (@code{const mglData &}y, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_step (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΈ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{tape}
+@deftypefn {MGL command} {} tape ydat ['stl'='']
+@deftypefnx {MGL command} {} tape xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} tape xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tape (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tape (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tape (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_tape (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tape_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tape_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ°ΡΠ°ΡΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{x}[i], @var{y}[i], @var{z}[i]@} ΠΊΠ°ΠΊ Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈ. ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ Π»Π΅Π½ΡΠ°(Ρ) Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ x-y (Π΄Π»Ρ @samp{x} Π² @var{pen}) ΠΈ/ΠΈΠ»ΠΈ y-z (Π΄Π»Ρ @samp{x} Π² @var{pen}). Π¨ΠΈΡΠΈΠ½Π° Π»Π΅Π½Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° @code{SetBarWidth()}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{flow}, @ref{barwidth}. @sref{Tape sample}
@end deftypefn
-@c ==================================================================
-@node Torus, Tube, Step, 1D plotting
-@subsection Torus
-@cindex Torus
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{r}, @var{z}@} ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{r.nx=z.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²Π΅Ρ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Axial}. @sref{Torus sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Torus (@code{const mglData &}r, @code{const mglData &}z, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_torus (@code{HMGL} gr, @code{const HMDT} r, @code{const HMDT} z, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{r}[i], @var{z}[i]@}.
+@anchor{area}
+@deftypefn {MGL command} {} area ydat ['stl'='']
+@deftypefnx {MGL command} {} area xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} area xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Area (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_area (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_area_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_area_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π»ΠΎΠΌΠ°Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Ρ Π²Π½ΠΈΠ· Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½Π°Ρ Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»ΠΎ ΠΊΡΠΈΠ²ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{bars}, @ref{stem}, @ref{region}. @sref{Area sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Torus (@code{const mglData &}z, @code{const char *}pen=@code{""})
-Π ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{r}[i], @var{z}[i]@}, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{r}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{region}
+@deftypefn {MGL command} {} region ydat1 ydat2 ['stl'='']
+@deftypefnx {MGL command} {} region xdat ydat1 ydat2 ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Region (@code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Region (@code{const mglData &}x, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_region (@code{HMGL} gr, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_region_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ 2 ΠΊΡΠΈΠ²ΡΠΌΠΈ. ΠΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½Π°Ρ Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»ΠΎ ΠΊΡΠΈΠ²ΡΡ
. ΠΡΠ»ΠΈ @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{i}, ΡΠΎ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΡ y1<y<y2, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π° ΠΈ ΠΎΠ±Π»Π°ΡΡΡ y2<y<y1. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{area}, @ref{bars}, @ref{stem}. @sref{Region sample}
@end deftypefn
-@c ==================================================================
-@node Tube, Mark, Torus, 1D plotting
-@subsection Tube
-@cindex Tube
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΡΡΠ±Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r}[i] Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@}. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx=r.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}. @sref{Tube sample}
+@anchor{stem}
+@deftypefn {MGL command} {} stem ydat ['stl'='']
+@deftypefnx {MGL command} {} stem xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} stem xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Stem (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_stem (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_stem_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_stem_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{area}, @ref{bars}, @ref{plot}, @ref{mark}. @sref{Stem sample}
+@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{float} r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube_xyzr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}pen)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{float} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠ±Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@}.
+@anchor{bars}
+@deftypefn {MGL command} {} bars ydat ['stl'='']
+@deftypefnx {MGL command} {} bars xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} bars xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Bars (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_bars (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_bars_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_bars_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ) ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{a}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{f}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠΈΠΏΠ° waterfall Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{barh}, @ref{cones}, @ref{area}, @ref{stem}, @ref{chart}, @ref{barwidth}. @sref{Bars sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{float} r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube_xyr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}pen)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{float} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠ±Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
+@anchor{barh}
+@deftypefn {MGL command} {} barh vdat ['stl'='']
+@deftypefnx {MGL command} {} barh ydat vdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Barh (@code{const mglData &}v, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Barh (@code{const mglData &}y, @code{const mglData &}v, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_barh (@code{HMGL} gr, @code{HCDT} v, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_barh_xy (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} v, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ) ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{a}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{f}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠΈΠΏΠ° waterfall Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{bars}, @ref{barwidth}. @sref{Barh sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tube (@code{const mglData &}y, @code{float} r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube_r (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}pen)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tube (@code{HMGL} gr, @code{const HMDT} y, @code{float} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΡΡΠ±Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r} ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{cones}
+@deftypefn {MGL command} {} cones ydat ['stl'='']
+@deftypefnx {MGL command} {} cones xdat ydat ['stl'='']
+@deftypefnx {MGL command} {} cones xdat ydat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cones (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cones (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cones (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_cones (@code{HMGL} gr, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_cones_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_cones_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΡΡ ΠΈΠ· ΡΠΎΡΠ΅ΠΊ Π΄ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ» @samp{a}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π΄ΡΡΠ³ΠΎΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΠΊΡΠΈΠ²ΡΡ
Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{bars}, @ref{barwidth}. @sref{Cones sample}
@end deftypefn
-@c ==================================================================
-@node Mark, TextMark, Tube, 1D plotting
-@subsection Mark
-@cindex Mark
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{r}*@var{MarkSize} (@pxref{Default sizes}) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx=r.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ @ref{Plot} Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ (ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ @samp{ }). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{TextMark}, @ref{Stem}, @ref{Error}. @sref{Mark sample}
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mark_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@}.
+@anchor{chart}
+@deftypefn {MGL command} {} chart adat ['col'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Chart (@code{const mglData &}a, @code{const char *}col=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_chart (@code{HMGL} gr, @code{HCDT} a, @code{const char *}col, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (ΠΏΠΎΡΡΠ°) Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΡΡ
@var{a}. Π§ΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΡ ΡΠ°Π²Π½ΠΎ ΡΠΈΡΠ»Ρ ΡΡΡΠΎΠΊ @var{a} (ΡΠ°Π²Π½ΠΎ @var{a.ny}). Π¦Π²Π΅Ρ ΠΏΠΎΠ»ΠΎΡ ΠΏΠΎΠΎΡΠ΅ΡΡΠ΄Π½ΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠ²Π΅ΡΠΎΠ² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π² @var{col} ΠΈΠ»ΠΈ Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ (ΡΠΌ. @ref{Palette and colors}). ΠΡΠΎΠ±Π΅Π» Π² ΡΠ²Π΅ΡΠ°Ρ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΌΡ "ΡΠ²Π΅ΡΡ", Ρ.Π΅. Π΅ΡΠ»ΠΈ @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠ±Π΅Π»(Ρ), ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΠΎΡΠ° Π½Π΅ ΡΠΈΡΡΠ΅ΡΡΡ. Π¨ΠΈΡΠΈΠ½Π° ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² @var{a}. ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{col} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ½Π°Ρ Π³ΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΠ»ΠΎΡ. ΠΡΠ°ΡΠΈΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π»ΡΡΡΠ΅ Π² (ΠΏΠΎΡΠ»Π΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ) ΠΈ/ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ»ΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ (ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Pie chart). @sref{Chart sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mark_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
+@anchor{boxplot}
+@deftypefn {MGL command} {} boxplot adat ['stl'='']
+@deftypefnx {MGL command} {} boxplot xdat adat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} BoxPlot (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} BoxPlot (@code{const mglData &}x, @code{const mglData &}a, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_boxplot (@code{HMGL} gr, @code{HCDT} a, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_boxplot_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} a, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ boxplot (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ box-and-whisker diagram ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ "ΡΡΠΈΠΊ Ρ ΡΡΠ°ΠΌΠΈ") Π² ΡΠΎΡΠΊΠ°Ρ
@var{x}[i] Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = @var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @var{z}=@var{Min.z}). ΠΡΠΎ Π³ΡΠ°ΡΠΈΠΊ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ΅ΠΉ @var{a}[i,j] (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠ²Π°ΡΡΠΈΠ»Ρ (Q1), ΠΌΠ΅Π΄ΠΈΠ°Π½Π° (Q2), Π²Π΅ΡΡ
Π½ΠΈΠΉ ΠΊΠ²Π°ΡΡΠΈΠ»Ρ (Q3) ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ) Π²Π΄ΠΎΠ»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ (j-Π³ΠΎ) Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{error}, @ref{bars}, @ref{barwidth}. @sref{BoxPlot sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mark (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mark_y (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{candle}
+@deftypefn {MGL command} {} candle vdat1 ['stl'='']
+@deftypefnx {MGL command} {} candle vdat1 vdat2 ['stl'='']
+@deftypefnx {MGL command} {} candle vdat1 ydat1 ydat2 ['stl'='']
+@deftypefnx {MGL command} {} candle vdat1 vdat2 ydat1 ydat2 ['stl'='']
+@deftypefnx {MGL command} {} candle xdat vdat1 vdat2 ydat1 ydat2 ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Candle (@code{const mglData &}v1, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Candle (@code{const mglData &}v1, @code{const mglData &}v2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Candle (@code{const mglData &}v1, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Candle (@code{const mglData &}v1, @code{const mglData &}v2, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Candle (@code{const mglData &}x, @code{const mglData &}v1, @code{const mglData &}v2, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_candle (@code{HMGL} gr, @code{HCDT} v1, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_candle_yv (@code{HMGL} gr, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_candle_xyv (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} v1, @code{HCDT} v2, @code{HCDT} y1, @code{HCDT} y2, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ candlestick chart Π² ΡΠΎΡΠΊΠ°Ρ
@var{x}[i]. ΠΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠΌ ("ΡΠ²Π΅ΡΠΎΠΉ") Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ. ΠΡΠΎΠ·ΡΠ°ΡΠ½Π°Ρ (Π±Π΅Π»Π°Ρ) ΡΠ²Π΅ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ @var{v1}[i]<@var{v2}[i], ΡΡΡΠ½Π°Ρ -- ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ. "Π’Π΅Π½ΠΈ" ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ @var{y1} ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ @var{y2} Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{v2} ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ @var{v2}[i]=@var{v1}[i+1]. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{bars}, @ref{barwidth}. @sref{Candle sample}
@end deftypefn
-@c ==================================================================
-@node TextMark, Error, Mark, 1D plotting
-@subsection TextMark
-@cindex TextMark
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡ @var{text} ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠ΅Ρ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ @var{r}*@var{MarkSize} (@pxref{Default sizes}) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx=r.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Mark}, @ref{Stem}. @sref{TextMark sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmarkw_xyzr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const wchar_t *}text, @code{const char *}fnt)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmark_xyzr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}text, @code{const char *}fnt)
-Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}.
-@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmarkw_xyr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} r, @code{const wchar_t *}text, @code{const char *}fnt)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmark_xyr (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}text, @code{const char *}fnt)
-Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}).
+@anchor{error}
+@deftypefn {MGL command} {} error ydat yerr ['stl'='']
+@deftypefnx {MGL command} {} error xdat ydat yerr ['stl'='']
+@deftypefnx {MGL command} {} error xdat ydat xerr yerr ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Error (@code{const mglData &}y, @code{const mglData &}ey, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ey, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ex, @code{const mglData &}ey, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_error (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} ey, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_error_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} ey, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_error_exy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} ex, @code{HCDT} ey, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i]@} Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = @var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @var{z}=@var{Min.z}). Π’Π°ΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ. ΠΡΠ»ΠΈ @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{@@}, ΡΠΎ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{mark}. @sref{Error sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const mglData &}r, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmarkw_yr (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} r, @code{const wchar_t *}text, @code{const char *}fnt)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmark_yr (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} r, @code{const char *}text, @code{const char *}fnt)
-Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{mark}
+@deftypefn {MGL command} {} mark ydat rdat ['stl'='']
+@deftypefnx {MGL command} {} mark xdat ydat rdat ['stl'='']
+@deftypefnx {MGL command} {} mark xdat ydat zdat rdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Mark (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_mark_y (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_mark_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_mark_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ @var{r}*@var{MarkSize} (ΡΠΌ. @ref{Default sizes}) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ΠΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ @ref{plot} Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ (ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ @samp{ }). ΠΠ»Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΠ°ΠΊ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ @ref{error} ΡΠΎ ΡΡΠΈΠ»Π΅ΠΌ @samp{@@}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{textmark}, @ref{error}, @ref{stem}. @sref{Mark sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const char *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmarkw (@code{HMGL} gr, @code{const HMDT} y, @code{const wchar_t *}text, @code{const char *}fnt)
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_textmark (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}text, @code{const char *}fnt)
-Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i]@} Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z}=@var{Min.z}), Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x]. The mark sizes @var{r}[i]=1 for all points.
+@anchor{textmark}
+@deftypefn {MGL command} {} textmark ydat 'txt' ['stl'='']
+@deftypefnx {MGL command} {} textmark ydat rdat 'txt' ['stl'='']
+@deftypefnx {MGL command} {} textmark xdat ydat rdat 'txt' ['stl'='']
+@deftypefnx {MGL command} {} textmark xdat ydat zdat rdat 'txt' ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}y, @code{const mglData &}r, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_textmark (@code{HMGL} gr, @code{HCDT} y, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmarkw (@code{HMGL} gr, @code{HCDT} y, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmark_yr (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} r, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmarkw_yr (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} r, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmark_xyr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} r, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmarkw_xyr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} r, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmark_xyzr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} r, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_textmarkw_xyzr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} r, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡ @var{text} ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠ΅Ρ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ @var{r}*@var{MarkSize} (ΡΠΌ. @ref{Default sizes}) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{mark}, @ref{stem}. @sref{TextMark sample}
@end deftypefn
-@c ==================================================================
-@node Error, BoxPlot, TextMark, 1D plotting
-@subsection Error
-@cindex Error
-
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i]@} Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = @var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @var{z}=@var{Min.z}). Π’Π°ΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=y.nx=z.nx=r.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ² (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}. @sref{Error sample}
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ex, @code{const mglData &}ey, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_error_exy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ex, @code{const HMDT} ey, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ @{@var{ex}, @var{ey}@} Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}, @var{y}@}.
+@anchor{label}
+@deftypefn {MGL command} {} label ydat 'txt' ['stl'='']
+@deftypefnx {MGL command} {} label xdat ydat 'txt' ['stl'='']
+@deftypefnx {MGL command} {} label xdat ydat zdat 'txt' ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}y, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}y, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}x, @code{const mglData &}y, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Label (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const wchar_t *}txt, @code{const char *}fnt=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_label (@code{HMGL} gr, @code{HCDT} y, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_labelw (@code{HMGL} gr, @code{HCDT} y, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_label_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_labelw_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_label_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}txt, @code{const char *}fnt, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_labelw_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const wchar_t *}txt, @code{const char *}fnt, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ @var{txt} Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{txt} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{%x}, @samp{%y}, @samp{%z} ΠΈΠ»ΠΈ @samp{%n}, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈΠ»ΠΈ Π½Π° Π½ΠΎΠΌΠ΅Ρ ΡΠΎΡΠΊΠΈ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{mark}, @ref{textmark}. @sref{Label sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ey, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_error_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ey, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ @var{ey} (ΡΠΎΠ»ΡΠΊΠΎ Π²Π΄ΠΎΠ»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}, @var{y}@}.
+@anchor{tube}
+@deftypefn {MGL command} {} tube ydat rdat ['stl'='']
+@deftypefnx {MGL command} {} tube ydat @code{rval} ['stl'='']
+@deftypefnx {MGL command} {} tube xdat ydat rdat ['stl'='']
+@deftypefnx {MGL command} {} tube xdat ydat @code{rval} ['stl'='']
+@deftypefnx {MGL command} {} tube xdat ydat zdat rdat ['stl'='']
+@deftypefnx {MGL command} {} tube xdat ydat zdat @code{rval} ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}y, @code{float} r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{float} r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{float} r, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_tube_r (@code{HMGL} gr, @code{HCDT} y, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tube (@code{HMGL} gr, @code{HCDT} y, @code{float} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tube_xyr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tube_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{float} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tube_xyzr (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{HCDT} r, @code{const char *}pen, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tube_xyz (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{float} r, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΡΡΡΠ±Ρ ΡΠ°Π΄ΠΈΡΡΠ° @var{r}[i] Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ @{@var{x}[i], @var{y}[i], @var{z}[i]@}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}. @sref{Tube sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Error (@code{const mglData &}y, @code{const mglData &}ey, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_error (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} ey, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ @var{ey} (ΡΠΎΠ»ΡΠΊΠΎ Π²Π΄ΠΎΠ»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ) Π² ΡΠΎΡΠΊΠ°Ρ
@{@var{x}, @var{y}@}, Π³Π΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
+@anchor{torus}
+@deftypefn {MGL command} {} torus rdat zdat ['stl'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Torus (@code{const mglData &}r, @code{const mglData &}z, @code{const char *}pen=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_torus (@code{HMGL} gr, @code{HCDT} r, @code{HCDT} z, @code{const char *}pen, @code{const char *}opt)
+@end ifclear
+Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{r}, @var{z}@} ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° @var{pen} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{x} ΠΈΠ»ΠΈ @samp{z}, ΡΠΎ ΠΎΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π° Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ y). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{plot}, @ref{axial}. @sref{Torus sample}
@end deftypefn
-@c ==================================================================
-@node BoxPlot, , Error, 1D plotting
-@subsection BoxPlot
-@cindex BoxPlot
-Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΡΡ boxplot (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ box-and-whisker diagram ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ "ΡΡΠΈΠΊ Ρ ΡΡΠ°ΠΌΠΈ") Π² ΡΠΎΡΠΊΠ°Ρ
@var{x}[i] Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ @var{z} = @var{zVal} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ @var{z}=@var{Min.z}). ΠΡΠΎ Π³ΡΠ°ΡΠΈΠΊ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠΈΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠ΅ΠΉ @var{a}[i,j] (ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠ²Π°ΡΡΠΈΠ»Ρ (Q1), ΠΌΠ΅Π΄ΠΈΠ°Π½Π° (Q2), Π²Π΅ΡΡ
Π½ΠΈΠΉ ΠΊΠ²Π°ΡΡΠΈΠ»Ρ (Q3) ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ) Π²Π΄ΠΎΠ»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ (j-Π³ΠΎ) Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΎΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅ @strong{Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²} Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @code{x.nx=a.nx}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΉ (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Plot}, @ref{Error}, @ref{Bars}, @ref{Default sizes}. @sref{BoxPlot sample}
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} BoxPlot (@code{const mglData &}x, @code{const mglData &}a, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_boxplot_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} a, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ boxplot Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ @var{x}[i].
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} BoxPlot (@code{const mglData &}a, @code{const char *}pen=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_boxplot (@code{HMGL} gr, @code{const HMDT} a, @code{const char *}pen)
-Π ΠΈΡΡΠ΅Ρ boxplot ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ @var{x}[i] ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}.x, @var{Max}.x].
-@end deftypefn
@c ##################################################################
@node 2D plotting, 3D plotting, 1D plotting, MathGL core
@section 2D Π³ΡΠ°ΡΠΈΠΊΠΈ
-
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
(2D) ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π΄Π²ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²) ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ°ΡΡΠΈΡΠ΅ @math{f(x_i,y_j), i=1...n, j=1...m}. ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² 2D Π³ΡΠ°ΡΠΈΠΊΠΎΠ²: ΡΠΏΠ»ΠΎΡΠ½Π°Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ (Surf), ΡΠ΅ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ (Mesh), ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ ΠΈΠ· ΡΡΠΈΠΊΠΎΠ² (Boxs), ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ ΠΈΠ· ΠΏΠ»ΠΈΡΠΎΠΊ (Tile), Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ (Fall), Π»Π΅Π½ΡΠΎΡΠΊΠΈ (Belt), Π³ΡΠ°ΡΠΈΠΊ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ (Dens), Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ (Cont), Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ (ContF) ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡ
Π²ΡΠ°ΡΠ΅Π½ΠΈΡ (Axial). Π ΡΡΠ½ΠΊΡΠΈΡΡ
Cont(), ContF() ΠΈ Axial() Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΡΡΡΠ½ΡΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΊΡ (Grid) ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠ° ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ Π»ΠΈΠ½ΠΈΠΉ ΡΡΠΎΠ²Π½Ρ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΏ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΡΡ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ ΠΈ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ
Π΅ΠΌΡ Π·Π°Π΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ @xref{Color scheme}. @sref{2D plot sample}
-
-@menu
-* Mesh::
-* Fall::
-* Belt::
-* Surf::
-* Boxs::
-* Tile::
-* Dens::
-* Cont::
-* ContF::
-* ContD::
-* Axial::
-* Grad::
-* Grid::
-@end menu
-
-@c ==================================================================
-@node Mesh, Fall, , 2D plotting
-@subsection Mesh
@cindex Mesh
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mesh (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mesh_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΡΠ°ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ, Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Surf}, @ref{Fall}, @ref{MeshNum}, @ref{Cont}, @ref{Tens}. @sref{Mesh sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Mesh (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_mesh (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Fall, Belt, Mesh, 2D plotting
-@subsection Fall
@cindex Fall
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Fall (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_fall_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΡΠΈΠ²ΡΡ
, ΡΠ΄Π²ΠΈΠ½ΡΡΡΡ
Π²Π³Π»ΡΠ±Ρ Π΄ΡΡΠ³ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³Π°. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{x}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ x-ΠΎΡΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ y-ΠΎΡΠΈ). ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Belt}, @ref{Mesh}, @ref{Tens}, @ref{MeshNum}. @sref{Fall sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Fall (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_fall (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Belt, Surf, Fall, 2D plotting
-@subsection Belt
@cindex Belt
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Belt (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_belt_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ Π»Π΅Π½ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ 3d ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° Plot() (@pxref{Plot}). Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{x}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ x-ΠΎΡΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ y-ΠΎΡΠΈ). ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Fall}, @ref{Surf}, @ref{Plot}, @ref{MeshNum}. @sref{Belt sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Belt (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_belt (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Surf, Boxs, Belt, 2D plotting
-@subsection Surf
@cindex Surf
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Surf (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_surf_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Mesh}, @ref{Dens}, @ref{Belt}, @ref{Tile}, @ref{Boxs}, @ref{SurfC}, @ref{SurfA}. @sref{Surf sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Surf (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_surf (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Boxs, Tile, Surf, 2D plotting
-@subsection Boxs
@cindex Boxs
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Boxs (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_boxs_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Surf}, @ref{Dens}, @ref{Tile}, @ref{Step}. @sref{Boxs sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Boxs (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_boxs (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Tile, Dens, Boxs, 2D plotting
-@subsection Tile
@cindex Tile
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tile (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tile_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ ΠΏΠ»ΠΈΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ 3d ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Step() (@pxref{Step}). Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Surf}, @ref{Boxs}, @ref{Step}, @ref{TileS}. @sref{Tile sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Tile (@code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tile (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Dens, Cont, Tile, 2D plotting
-@subsection Dens
@cindex Dens
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Dens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_dens_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Surf}, @ref{Cont}, @ref{ContF}, @ref{Boxs}, @ref{Tile}, @ref{DensXYZ}. @sref{Dens sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Dens (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_dens (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
-
-@c ==================================================================
-@node Cont, ContF, Dens, 2D plotting
-@subsection Cont
@cindex Cont
+@cindex ContF
+@cindex ContD
+@cindex Axial
+@cindex Grad
+@cindex Grid
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_cont_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal} (ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z=v}[k] Π΅ΡΠ»ΠΈ @code{zVal==NAN}). ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{t} ΠΈΠ»ΠΈ @samp{T}, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{v}[k] Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π²Π΄ΠΎΠ»Ρ ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π½Π°Π΄ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄) ΠΊΡΠΈΠ²ΠΎΠΉ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens}, @ref{ContF}, @ref{ContD}, @ref{Axial}, @ref{ContXYZ}. @sref{Cont sample}
-@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_cont__val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
-@end deftypefn
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΡ
(2D) ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ²ΡΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π΄Π²ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²) ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ°ΡΡΠΈΡΠ΅ @math{f(x_i,y_j), i=1...n, j=1...m}. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ) Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ (ΡΠΌ. @ref{Color scheme}). Π‘ΡΡΠΎΠΊΠ° @var{opt} Π·Π°Π΄Π°Π΅Ρ ΠΎΠΏΡΠΈΠΈ Π³ΡΠ°ΡΠΈΠΊΠ° (ΡΠΌ. @ref{Command options}). @sref{2D samples}
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Cont (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_cont_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Cmin}, @var{Cmax}].
-@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Cont (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_cont (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{surf}
+@deftypefn {MGL command} {} surf zdat ['sch'='']
+@deftypefnx {MGL command} {} surf xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Surf (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Surf (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_surf (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_surf_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{mesh}, @ref{dens}, @ref{belt}, @ref{tile}, @ref{boxs}, @ref{surfc}, @ref{surfa}. @sref{Surf sample}
@end deftypefn
-@c ==================================================================
-@node ContF, ContD, Cont, 2D plotting
-@subsection ContF
-@cindex ContF
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contf_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΊΠΎΠ½ΡΡΡΡ) ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal} (ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z=v}[k] Π΅ΡΠ»ΠΈ @code{zVal==NAN}). ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens}, @ref{Cont}, @ref{Axial}, @ref{ContFXYZ}. @sref{ContF sample}
+@anchor{mesh}
+@deftypefn {MGL command} {} mesh zdat ['sch'='']
+@deftypefnx {MGL command} {} mesh xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Mesh (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Mesh (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_mesh (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_mesh_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΡΠ°ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ, Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{surf}, @ref{fall}, @ref{meshnum}, @ref{cont}, @ref{tens}. @sref{Mesh sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contf_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{fall}
+@deftypefn {MGL command} {} fall zdat ['sch'='']
+@deftypefnx {MGL command} {} fall xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Fall (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Fall (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_fall (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_fall_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΡΠΈΠ²ΡΡ
, ΡΠ΄Π²ΠΈΠ½ΡΡΡΡ
Π²Π³Π»ΡΠ±Ρ Π΄ΡΡΠ³ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³Π°. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{x}, ΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ x, ΠΈΠ½Π°ΡΠ΅ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ y. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{belt}, @ref{mesh}, @ref{tens}, @ref{meshnum}. @sref{Fall sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContF (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contf_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Cmin}, @var{Cmax}].
+@anchor{belt}
+@deftypefn {MGL command} {} belt zdat ['sch'='']
+@deftypefnx {MGL command} {} belt xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Belt (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Belt (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_belt (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_belt_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π»Π΅Π½ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ 3d ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° @ref{plot}. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{x}, ΡΠΎ Π»Π΅Π½ΡΠΎΡΠΊΠΈ ΡΠΈΡΡΡΡΡΡ Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ x, ΠΈΠ½Π°ΡΠ΅ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) Π²Π΄ΠΎΠ»Ρ ΠΎΡΠΈ y. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{fall}, @ref{surf}, @ref{plot}, @ref{meshnum}. @sref{Belt sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContF (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contf (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{boxs}
+@deftypefn {MGL command} {} boxs zdat ['sch'='']
+@deftypefnx {MGL command} {} boxs xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Boxs (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Boxs (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_boxs (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_boxs_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{surf}, @ref{dens}, @ref{tile}, @ref{step}. @sref{Boxs sample}
@end deftypefn
-@c ==================================================================
-@node ContD, Axial, ContF, 2D plotting
-@subsection ContD
-@cindex ContD
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contd_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΊΠΎΠ½ΡΡΡΡ) ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal} (ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z=v}[k] Π΅ΡΠ»ΠΈ @code{zVal==NAN}) ΡΠ²Π΅ΡΠ°ΠΌΠΈ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ²Π½ΠΎ. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k] (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ @code{v.nx>2}). Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΠΊΠΎΠ½ΡΡΡΠΎΠ²: ΡΠ²Π΅Ρ k-Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ @code{sch[k%strlen(sch)]}. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens}, @ref{Cont}, @ref{ContF}. @sref{ContD sample}
+@anchor{tile}
+@deftypefn {MGL command} {} tile zdat ['sch'='']
+@deftypefnx {MGL command} {} tile xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tile (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Tile (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_tile (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_tile_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΠΏΠ»ΠΈΡΠΊΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΡΠ°ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ 3d ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ @ref{step}. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{surf}, @ref{boxs}, @ref{step}, @ref{tiles}. @sref{Tile sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contd_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{dens}
+@deftypefn {MGL command} {} dens zdat ['sch'='']
+@deftypefnx {MGL command} {} dens xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Dens (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""}, @code{float} zVal=@code{NAN})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Dens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""}, @code{float} zVal=@code{NAN})
+@deftypefnx {C function} @code{void} mgl_dens (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_dens_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{Min}.z. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠΊΠ°. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{surf}, @ref{cont}, @ref{contf}, @ref{boxs}, @ref{tile}, @code{dens[xyz]}. @sref{Dens sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContD (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contd_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Cmin}, @var{Cmax}].
+@anchor{cont}
+@deftypefn {MGL command} {} cont vdat zdat ['sch'='']
+@deftypefnx {MGL command} {} cont vdat xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_cont__val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_cont_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z=v}[k] ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z} = @var{Min}.z Π΅ΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{_}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{t} ΠΈΠ»ΠΈ @samp{T}, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{v}[k] Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π²Π΄ΠΎΠ»Ρ ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π½Π°Π΄ (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄) ΠΊΡΠΈΠ²ΠΎΠΉ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{dens}, @ref{contf}, @ref{contd}, @ref{axial}, @code{cont[xyz]}. @sref{Cont sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} ContD (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_contd (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@deftypefn {MGL command} {} cont zdat ['sch'='']
+@deftypefnx {MGL command} {} cont xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cont (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Cont (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_cont (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_cont_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ @var{num} ΡΠ°Π²Π΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 7).
@end deftypefn
-@c ==================================================================
-@node Axial, Grad, ContD, 2D plotting
-@subsection Axial
-@cindex Axial
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_axial_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-Π ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ @samp{x}, @samp{y} ΠΈΠ»ΠΈ @samp{z}, ΡΠΎ ΠΎΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Cont}, @ref{ContF}, @ref{Torus}, @ref{Surf3}. @sref{Axial sample}
+@anchor{contf}
+@deftypefn {MGL command} {} contf vdat zdat ['sch'='']
+@deftypefnx {MGL command} {} contf vdat xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contf_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contf_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΊΠΎΠ½ΡΡΡΡ) ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z=v}[k] ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z} = @var{Min}.z Π΅ΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{_}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{dens}, @ref{cont}, @ref{contd}, @code{contf[xyz]}. @sref{ContF sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_axial_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} z, @code{const char *}sch)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@deftypefn {MGL command} {} contf zdat ['sch'='']
+@deftypefnx {MGL command} {} contf xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContF (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContF (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contf (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contf_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ @var{num} ΡΠ°Π²Π΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 7).
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Axial (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{3})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_axial_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Cmin}, @var{Cmax}].
+@anchor{contd}
+@deftypefn {MGL command} {} contd vdat zdat ['sch'='']
+@deftypefnx {MGL command} {} contd vdat xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contd_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contd_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΊΠΎΠ½ΡΡΡΡ) ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z=v}[k] ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z} = @var{Min}.z Π΅ΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{_}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠ° ΠΊΠΎΠ½ΡΡΡΠΎΠ²: ΡΠ²Π΅Ρ k-Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ k-ΡΠΉ ΡΠ²Π΅Ρ ΡΡΡΠΎΠΊΠΈ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{dens}, @ref{cont}, @ref{contf}. @sref{ContD sample}
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Axial (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{3})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_axial (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@deftypefn {MGL command} {} contd zdat ['sch'='']
+@deftypefnx {MGL command} {} contd xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContD (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContD (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contd (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contd_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ @var{num} ΡΠ°Π²Π΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 7).
@end deftypefn
-@c ==================================================================
-@node Grad, Grid, Axial, 2D plotting
-@subsection Grad
-@cindex Grad
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}phi, @code{const char *}sch=@code{""}, @code{int} num=@code{5})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grad_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ @var{phi}[i,j,k] Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ @{@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π§ΠΈΡΠ»ΠΎ Π»ΠΈΠ½ΠΈΠΉ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ @var{num}. ΠΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π³ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈ @var{num}<0. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z}, @var{phi} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=phi.nx && y.nx=phi.ny && z.nx=phi.nz} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx=phi.nx && x.ny=y.ny=z.ny=phi.ny && x.nz=y.nz=z.nz=phi.nz}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x}, @var{y} ΠΈ @var{z} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{phi}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens3}, @ref{Cont3}, @ref{Flow}.
+@anchor{contv}
+@deftypefn {MGL command} {} contv vdat zdat ['sch'='']
+@deftypefnx {MGL command} {} contv vdat xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContV (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContV (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contv_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contv_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠ»ΠΈΠ½Π΄ΡΡ ΠΎΡ Π»ΠΈΠ½ΠΈΠΉ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z=v}[k] ΠΈΠ»ΠΈ ΠΏΡΠΈ @var{z} = @var{Min}.z Π΅ΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{_}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{cont}, @ref{contf}. @sref{ContV sample}
@end deftypefn
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grad_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ @var{phi}[i,j] Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ @{@var{x}[i,j], @var{y}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π§ΠΈΡΠ»ΠΎ Π»ΠΈΠ½ΠΈΠΉ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ @var{num}. ΠΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π³ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈ @var{num}<0. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{phi} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=phi.nx && y.nx=phi.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=phi.nx && x.ny=y.ny=phi.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{phi}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens}, @ref{Cont}, @ref{ContF}, @ref{Flow}. @sref{Grad sample}
+@deftypefn {MGL command} {} contv zdat ['sch'='']
+@deftypefnx {MGL command} {} contv xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContV (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} ContV (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_contv (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_contv_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ @var{num} ΡΠ°Π²Π΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 7).
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grad (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grad (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{axial}
+@deftypefn {MGL command} {} axial vdat zdat ['sch'='']
+@deftypefnx {MGL command} {} axial vdat xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_axial_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_axial_xy_val (@code{HMGL} gr, @code{HCDT} v, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ΠΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠΈΡΡΡΡΡΡ Π΄Π»Ρ @var{z}[i,j]=@var{v}[k]. ΠΡΠ»ΠΈ @var{sch} ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ @samp{x}, @samp{y} ΠΈΠ»ΠΈ @samp{z}, ΡΠΎ ΠΎΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{cont}, @ref{contf}, @ref{torus}, @ref{surf3}. @sref{Axial sample}
@end deftypefn
-@c ==================================================================
-@node Grid, , Grad, 2D plotting
-@subsection Grid
-@cindex Grid
-
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grid (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grid_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-Π ΠΈΡΡΠ΅Ρ ΠΏΠ»ΠΎΡΠΊΡΡ ΡΠ΅ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{zVal}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=z.nx && y.nx=z.ny} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x} ΠΈ @var{y} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{z}). ΠΡΠ°ΡΠΈΠΊ ΡΡΡΠΎΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ z ΡΡΠ΅Π·Π° Π΄Π°Π½Π½ΡΡ
. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens}, @ref{Cont}, @ref{ContF}.
+@deftypefn {MGL command} {} axial zdat ['sch'='']
+@deftypefnx {MGL command} {} axial xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Axial (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""}, @code{int} num=@code{3})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Axial (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""}, @code{int} num=@code{3})
+@deftypefnx {C function} @code{void} mgl_axial (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_axial_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°. ΠΠ΄Π΅ΡΡ @var{num} ΡΠ°Π²Π΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° @var{value} Π² ΠΎΠΏΡΠΈΡΡ
@var{opt} (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 3).
@end deftypefn
-@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grid (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grid (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{x}, @var{y} ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Min}, @var{Max}].
+@anchor{grid2}
+@deftypefn {MGL command} {} grid2 zdat ['sch'='']
+@deftypefnx {MGL command} {} grid2 xdat ydat zdat ['sch'='']
+@ifclear UDAV
+@deftypefnx {Method on @code{mglGraph}} @code{void} Grid (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {Method on @code{mglGraph}} @code{void} Grid (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{const char *}opt=@code{""})
+@deftypefnx {C function} @code{void} mgl_grid (@code{HMGL} gr, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@deftypefnx {C function} @code{void} mgl_grid_xy (@code{HMGL} gr, @code{HCDT} x, @code{HCDT} y, @code{HCDT} z, @code{const char *}sch, @code{const char *}opt)
+@end ifclear
+Π ΠΈΡΡΠ΅Ρ ΠΏΠ»ΠΎΡΠΊΡΡ ΡΠ΅ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} ΠΏΡΠΈ @var{z} = @var{Min}.z. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{dens}, @ref{cont}, @ref{contf}, @ref{meshnum}.
@end deftypefn
* Pipe::
@end menu
+@c ==================================================================
+@subsection Grad
+@cindex Grad
+
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}phi, @code{const char *}sch=@code{""}, @code{int} num=@code{5})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_grad_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ @var{phi}[i,j,k] Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ @{@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π§ΠΈΡΠ»ΠΎ Π»ΠΈΠ½ΠΈΠΉ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ @var{num}. ΠΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π³ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈ @var{num}<0. ΠΠ»Π°Π΄ΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² @var{x}, @var{y}, @var{z}, @var{phi} Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ @code{x.nx=phi.nx && y.nx=phi.ny && z.nx=phi.nz} ΠΈΠ»ΠΈ @code{x.nx=y.nx=z.nx=phi.nx && x.ny=y.ny=z.ny=phi.ny && x.nz=y.nz=z.nz=phi.nz}. ΠΠ°ΡΡΠΈΠ²Ρ @var{x}, @var{y} ΠΈ @var{z} ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (Π½Π΅ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ ΠΊΠ°ΠΊ @var{phi}). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Dens3}, @ref{Cont3}, @ref{Flow}.
+@end deftypefn
+
+
@c ==================================================================
@node Traj, Vect, , Vector fields
@subsection Traj
@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Traj (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN}, @code{float} len=@code{0})
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_traj_xyz (@code{HMGL} gr, @code{const HMDT}x, @code{const HMDT}y, @code{const HMDT}z, @code{const HMDT}ax, @code{const HMDT}ay, @code{const HMDT}az, @code{const char *}sch, @code{float} len)
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_traj_xy (@code{HMGL} gr, @code{const HMDT}x, @code{const HMDT}y, @code{const HMDT}ax, @code{const HMDT}ay, @code{const char *}sch, @code{float} zVal, @code{float} len)
-Π ΠΈΡΡΠ΅Ρ Π²Π΅ΠΊΡΠΎΡΠ° @{@var{ax}, @var{ay}, @var{az}@} Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{x}, @var{y}, @var{z}@}. ΠΠ»ΠΈΠ½Π° Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° @math{\sqrt@{ax^2+ay^2+az^2@}}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ (@pxref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ²Π΅Ρ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (@pxref{Palette and colors}). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{len} Π·Π°Π΄Π°Π΅Ρ ΡΠ°ΠΊΡΠΎΡ Π΄Π»ΠΈΠ½Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠ² (Π΅ΡΠ»ΠΈ Π½Π΅ Π½ΡΠ»Ρ) ΠΈΠ»ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΊΡΠΈΠ²ΠΎΠΉ (Π΅ΡΠ»ΠΈ @var{len}=0). Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ 2 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Vect}. @sref{Traj sample}
+Π ΠΈΡΡΠ΅Ρ Π²Π΅ΠΊΡΠΎΡΠ° @{@var{ax}, @var{ay}, @var{az}@} Π²Π΄ΠΎΠ»Ρ ΠΊΡΠΈΠ²ΠΎΠΉ @{@var{x}, @var{y}, @var{z}@}. ΠΠ»ΠΈΠ½Π° Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° @math{\sqrt@{ax^2+ay^2+az^2@}}. Π‘ΡΡΠΎΠΊΠ° @var{pen} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ (ΡΠΌ. @ref{Line styles}). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (@code{pen=""}) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ²Π΅Ρ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ (ΡΠΌ. @ref{Palette and colors}). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{len} Π·Π°Π΄Π°Π΅Ρ ΡΠ°ΠΊΡΠΎΡ Π΄Π»ΠΈΠ½Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠ² (Π΅ΡΠ»ΠΈ Π½Π΅ Π½ΡΠ»Ρ) ΠΈΠ»ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΊΡΠΈΠ²ΠΎΠΉ (Π΅ΡΠ»ΠΈ @var{len}=0). Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ 2 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠ°ΡΠΈΠΊ ΡΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΌΠ°ΡΡΠΈΡΠ°. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{Vect}. @sref{Traj sample}
@end deftypefn
@c ==================================================================
@subsection TriCont
@cindex TriCont
-@deftypefn {Method on @code{mglGraph}} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {Method on @code{mglGraph}} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {C function} @code{void} mgl_tricont_xyzcv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{float} zVal)
-@deftypefnx {C function} @code{void} mgl_tricont_xyzv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tricont_xyzcv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{float} zVal)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tricont_xyzv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
Π ΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΠΈΠ· ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΏΡΠΈ @var{z} = @var{zVal} (ΠΈΠ»ΠΈ Π΄Π»Ρ @var{z=v}[k] Π΅ΡΠ»ΠΈ @code{zVal==NAN}). ΠΠ΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π·Π°Π΄Π°ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ @var{id} Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° @var{id} Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ 3 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅. ΠΠ°ΡΡΠΈΠ²Ρ @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠ°ΡΡΠΈΠ² @var{c} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² (Π΅ΡΠ»ΠΈ @var{id}.ny=@var{c}.nx) ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ Π²Π΅ΡΡΠΈΠ½ (Π΅ΡΠ»ΠΈ @var{x}.nx=@var{c}.nx). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{TriPlot}, @ref{Cont}.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {Method on @code{mglGraph}} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
-@deftypefnx {C function} @code{void} mgl_tricont_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{num}, @code{float} zVal)
-@deftypefnx {C function} @code{void} mgl_tricont_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{num}, @code{float} zVal)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tricont_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{num}, @code{float} zVal)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_tricont_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{num}, @code{float} zVal)
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ @var{v} ΠΈΠ· @var{num} ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ [@var{Cmin}, @var{Cmax}].
@end deftypefn
@subsection QuadPlot
@cindex QuadPlot
-@deftypefn {Method on @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
-@deftypefnx {Method on @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
-@deftypefnx {C function} @code{void} mgl_quadplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-@deftypefnx {C function} @code{void} mgl_quadplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
+@deftypefnx {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_quadplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_quadplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
Π ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΠ΅ΡΡΠΈΠ½Ρ ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² Π·Π°Π΄Π°ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ @var{id} Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΎΡΠ΅ΠΊ @{@var{x}[i], @var{y}[i], @var{z}[i]@}. Π‘ΡΡΠΎΠΊΠ° @var{sch} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ @samp{#}, ΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎ 1-ΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° @var{id} Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ 4 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅. ΠΠ°ΡΡΠΈΠ²Ρ @var{x}, @var{y}, @var{z} Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠ°ΡΡΠΈΠ² @var{c} Π·Π°Π΄Π°Π΅Ρ ΡΠ²Π΅Ρ ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² (Π΅ΡΠ»ΠΈ @var{id}.ny=@var{c}.nx) ΠΈΠ»ΠΈ ΡΠ²Π΅Ρ Π²Π΅ΡΡΠΈΠ½ (Π΅ΡΠ»ΠΈ @var{x}.nx=@var{c}.nx). Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ @ref{TriPlot}.
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
-@deftypefnx {C function} @code{void} mgl_quadplot_xy (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}sch, @code{float} zVal)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_quadplot_xy (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}sch, @code{float} zVal)
ΠΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Ρ @var{z}[i]=@var{zVal}.
@end deftypefn
@cindex Plot
@cindex Surf
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ 1D ΠΈΠ»ΠΈ 2D ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ ΠΈΡ
ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{stl} Π·Π°Π΄Π°Π΅ΠΊΡ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ (@pxref{Line styles}) Π΄Π»Ρ @code{Plot()} ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ (@pxref{Color scheme}) Π΄Π»Ρ @code{Surf()}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{n} Π·Π°Π΄Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅(Π°ΠΌ) Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (v. 1.10) ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅Π·ΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 1D Π³ΡΠ°ΡΠΈΠΊΠΎΠ² (Ρ.Π΅. Π΄Π»Ρ Plot()).
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ 1D ΠΈΠ»ΠΈ 2D ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΡΠΎΡΠΌΡΠ»Π°ΠΌΠΈ. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ ΠΈΡ
ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{stl} Π·Π°Π΄Π°Π΅ΠΊΡ ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ (ΡΠΌ. @ref{Line styles}) Π΄Π»Ρ @code{Plot()} ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ (ΡΠΌ. @ref{Color scheme}) Π΄Π»Ρ @code{Surf()}. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{n} Π·Π°Π΄Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ ΠΏΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ΅(Π°ΠΌ) Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠ°. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ (v. 1.10) ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅Π·ΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 1D Π³ΡΠ°ΡΠΈΠΊΠΎΠ² (Ρ.Π΅. Π΄Π»Ρ Plot()).
@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Plot (@code{const char *}eqY, @code{const char *}stl=@code{""}, @code{float} zVal=@code{NAN}, @code{int} n=@code{100})
@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{void} mgl_fplot (@code{HMGL} gr, @code{const char *}eqY, @code{const char *}stl, @code{float} zVal, @code{int} n)
@cindex Fit2
@cindex Fit3
-ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄Π±ΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
, Ρ.Π΅. ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡΡ ΡΡΠΌΠΌΡ @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. ΠΡΠΈ ΡΡΠΎΠΌ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ @samp{f} ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° @samp{x} (1D ΡΠ»ΡΡΠ°ΠΉ), ΠΎΡ Π΄Π²ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² @samp{x,y} (2D ΡΠ»ΡΡΠ°ΠΉ) ΠΈΠ»ΠΈ ΠΎΡ ΡΡΠ΅Ρ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² @samp{x,y,z} (3D ΡΠ»ΡΡΠ°ΠΉ). Π€ΡΠ½ΠΊΡΠΈΡ @samp{f} ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ @var{var} (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, @samp{abcd}). ΠΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{ini}. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΈ Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{print}=@code{true} Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΡΠ»Ρ Π² @var{Message} (@pxref{Error handling}).
+ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄Π±ΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
, Ρ.Π΅. ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡΡ ΡΡΠΌΠΌΡ @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. ΠΡΠΈ ΡΡΠΎΠΌ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ @samp{f} ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° @samp{x} (1D ΡΠ»ΡΡΠ°ΠΉ), ΠΎΡ Π΄Π²ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² @samp{x,y} (2D ΡΠ»ΡΡΠ°ΠΉ) ΠΈΠ»ΠΈ ΠΎΡ ΡΡΠ΅Ρ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² @samp{x,y,z} (3D ΡΠ»ΡΡΠ°ΠΉ). Π€ΡΠ½ΠΊΡΠΈΡ @samp{f} ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°Π΄Π°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ @var{var} (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, @samp{abcd}). ΠΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{ini}. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΈ Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ @var{print}=@code{true} Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΡΠ»Ρ Π² @var{Message} (ΡΠΌ. @ref{Error handling}).
Π€ΡΠ½ΠΊΡΠΈΠΈ Fit() ΠΈ FitS() Π½Π΅ ΡΠΈΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ½ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² @var{fit} ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ @samp{f} Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ @math{\chi^2} ΠΎΡΠΈΠ±ΠΊΡ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠ°ΡΠΈΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ @samp{x,y,z} ΡΠ°Π²Π½ΠΎΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ @var{Min}--@var{Max}. Π§ΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π² @var{fit} Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° @var{fit} ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ @var{FitPnts}. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ GSL. @sref{Fitting sample}
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
. ΠΠ½ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠΎΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ PIC ΡΠ°ΡΡΠ΅ΡΠΎΠ²) ΠΈ ΠΎΠ½ Ρ
ΠΎΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ, ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
(Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠ΅ΡΠΊΠ°Ρ
). ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠ΅ΡΠΎΠΊ ΡΠ°Π²Π΅Π½ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Min...Max. ΠΠ°ΡΡΠΈΠ²Ρ @var{x}, @var{y}, @var{z} ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ) ΡΠΎΡΠ΅ΠΊ. ΠΠ°ΡΡΠΈΠ² @var{a} Π·Π°Π΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
. Π§ΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ @var{res} -- ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠ° @var{res} ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ @var{FitPnts}.
-@deftypefn {Method on @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}a)
-@deftypefnx {C function} @code{int} mgl_hist_x (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} a)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}a)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_hist_x (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} a)
Π‘ΠΎΠ·Π΄Π΅Ρ 1D ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° @var{a} Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [Min, Max].
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}a)
-@deftypefnx {C function} @code{int} mgl_hist_xy (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} a)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}a)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_hist_xy (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} a)
Π‘ΠΎΠ·Π΄Π΅Ρ 2D ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° @var{a} Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [Min, Max].
@end deftypefn
-@deftypefn {Method on @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}a)
-@deftypefnx {C function} @code{int} mgl_hist_xyz (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} a)
+@deftypefn {ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° @code{mglGraph}} @code{void} Hist (@code{mglData &}res, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}a)
+@deftypefnx {Π€ΡΠ½ΠΊΡΠΈΡ Π‘} @code{int} mgl_hist_xyz (@code{HMGL} gr, @code{HMDT} res, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} a)
Π‘ΠΎΠ·Π΄Π΅Ρ 3D ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° @var{a} Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [Min, Max].
@end deftypefn
gr->SubPlot(2,2,1,""); gr->Title("'v' style");
gr->Box(); gr->Flow(a,b,"v");
- gr->SubPlot(2,2,2,""); gr->Title("from edges only");
- gr->Box(); gr->Flow(a,b,"","value -5");
+ gr->SubPlot(2,2,2,""); gr->Title("'\\#' style");
+ gr->Box(); gr->Flow(a,b,"#");
mglData ex,ey,ez; mgls_prepare3v(&ex,&ey,&ez);
gr->SubPlot(2,2,3); gr->Title("3d variant"); gr->Rotate(50,60);
int sample(mglGraph *gr)
{
mglData a,b; mgls_prepare2v(&a,&b);
- gr->SubPlot(2,2,0,""); gr->Title("Flow plot (default)");
+ gr->SubPlot(2,2,0,""); gr->Title("Pipe plot (default)");
gr->Light(true); gr->Box(); gr->Pipe(a,b);
gr->SubPlot(2,2,1,""); gr->Title("'i' style");
gr->Box(); gr->Pipe(a,b,"i");
- gr->SubPlot(2,2,2,""); gr->Title("from edges only");
- gr->Box(); gr->Pipe(a,b,"",0.05,"value -5");
+ gr->SubPlot(2,2,2,""); gr->Title("'\\#' style");
+ gr->Box(); gr->Pipe(a,b,"#");
mglData ex,ey,ez; mgls_prepare3v(&ex,&ey,&ez);
gr->SubPlot(2,2,3); gr->Title("3d variant"); gr->Rotate(50,60);
mglData a; mgls_prepare2d(&a);
gr->Light(true);
- gr->SubPlot(2,1,0); gr->Rotate(50,60+3);
+ gr->SubPlot(2,1,0); gr->Rotate(50,60+1);
gr->Box(); gr->Surf(a);
- gr->SubPlot(2,1,1); gr->Rotate(50,60-3);
+ gr->SubPlot(2,1,1); gr->Rotate(50,60-1);
gr->Box(); gr->Surf(a);
return 0;
}
There are some keys handles for manipulating by the plot: 'a', 'd', 'w', 's' for the rotating; ',', '.' for viewing of the previous or next frames in the list; 'r' for the switching of transparency; 'f' for the switching of lightning; 'x' for hiding (closing) the window.
@end deftypefn
-@deftypefn {Method on @code{mglWindow}} @code{void} RunThr ()
-@c @deftypefnx {C function} @code{HMGL} mgl_qt_run ()
-@deftypefnx {C function} @code{HMGL} mgl_fltk_thr ()
+@deftypefn {Method on @code{mglWindow}} @code{int} RunThr ()
+@deftypefnx {C function} @code{int} mgl_fltk_thr ()
Run main loop for event handling in separate thread. Note, right now it work for FLTK windows only.
@end deftypefn
-@deftypefn {Method on @code{mglWindow}} @code{void} Run ()
-@deftypefnx {C function} @code{HMGL} mgl_qt_run ()
-@deftypefnx {C function} @code{HMGL} mgl_fltk_run ()
+@deftypefn {Method on @code{mglWindow}} @code{int} Run ()
+@deftypefnx {C function} @code{int} mgl_qt_run ()
+@deftypefnx {C function} @code{int} mgl_fltk_run ()
Run main loop for event handling. Usually it should be called in a separate thread or as last function call in @code{main()}.
@end deftypefn
+@deftypefn {Method on @code{mglWindow}} @code{void} SetClickFunc (@code{void} (*func)(@code{HMGL} gr, @code{void *}p))
+@deftypefnx {C function} @code{void} mgl_set_click_func (@code{void} (*func)(@code{HMGL} gr, @code{void *}p))
+Set callback function @code{func} which will be called on mouse click.
+@end deftypefn
+
@deftypefn {Method on @code{mglWindow}} @code{void} ToggleAlpha ()
@deftypefnx {C function} @code{int} mgl_wnd_toggle_alpha (@code{HMGL} gr)
Switch on/off transparency but do not overwrite switches in user drawing function.
21. MGL testing system ???
22. Export to X3D
23. Try libtcc (TinyCC) as alternative to MGL -- in mgllab???
-24. Use OI & Z for determening {x,y,z} from {xs,ys}. Try to find closest.
+24. Use OI & Z for determining {x,y,z} from {xs,ys}. Try to find closest.
+25. More accurate intersections in Region
+26. Add flag for drawing 3d arrows instead of 2d (S,D -- cube, T -- sq.pyramid, I -- square, O -- sphere???, A,K,V -- ???)
============= UDAV =============
a->setShortcut(Qt::Key_F1); o->addAction(a);
// a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("&Examples"), this);
// connect(a, SIGNAL(triggered()), this, SLOT(showExamples()));
- a->setToolTip(tr("Show examples of MGL usage (Shift+F1)."));
- a->setShortcut(Qt::SHIFT+Qt::Key_F1); o->addAction(a);
+// a->setToolTip(tr("Show examples of MGL usage (Shift+F1)."));
+// a->setShortcut(Qt::SHIFT+Qt::Key_F1); o->addAction(a);
a = new QAction(QPixmap(":/xpm/help-faq.png"), tr("H&ints"), this);
connect(a, SIGNAL(triggered()), this, SLOT(showHint()));
a->setToolTip(tr("Show hints of MGL usage.")); o->addAction(a);
const Fl_Menu_Item *m = popup->popup(Fl::event_x(), Fl::event_y(), 0, 0, 0);
if(m) m->do_callback(wpar, vpar);
}
- else if(gr->get(MGL_SHOW_POS) && !zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE)
+ else if(!zoom && !rotate && code==FL_PUSH && Fl::event_button()==FL_LEFT_MOUSE)
{
- mglPoint p = gr->CalcXYZ(Fl::event_x()-x(), Fl::event_y()-y());
- char s[128];
- sprintf(s,"x=%g, y=%g, z=%g",p.x,p.y,p.z);
- draw(); fl_color(FL_BLACK); fl_draw(s,40,70);
+ mglCanvasWnd *g=dynamic_cast<mglCanvasWnd *>(gr);
+ if(g && g->ClickFunc) g->ClickFunc(draw_par);
+ if(gr->get(MGL_SHOW_POS))
+ {
+ mglPoint p = gr->CalcXYZ(Fl::event_x()-x(), Fl::event_y()-y());
+ if(g) g->LastMousePos = p;
+ char s[128];
+ sprintf(s,"x=%g, y=%g, z=%g",p.x,p.y,p.z);
+ draw(); fl_color(FL_BLACK); fl_draw(s,40,70);
+ }
}
else if((!rotate && !zoom) || Fl::event_button()!=FL_LEFT_MOUSE)
{
if(!zoom && !rotate && ev->button()&Qt::LeftButton)
{
mglPoint p = gr->CalcXYZ(ev->x(), ev->y());
+ mglCanvasWnd *g=dynamic_cast<mglCanvasWnd *>(gr);
+ if(g) g->LastMousePos = p;
mousePos.sprintf("x=%g, y=%g, z=%g",p.x,p.y,p.z);
repaint();
+
+ if(g && g->ClickFunc) g->ClickFunc(draw_par);
emit mouseClick(p.x,p.y,p.z);
emit posChanged(mousePos);
emit objChanged(gr->GetObjId(ev->x(),ev->y())-1);
}
}
//-----------------------------------------------------------------------------
-void QMathGL::exportX3D(QString fname)
+/*void QMathGL::exportX3D(QString fname)
{
if(fname.isEmpty()) fname = gr->PlotId.c_str();
if(fname.isEmpty()) QMessageBox::critical(this, appName, tr("No filename."),QMessageBox::Ok,0,0);
mgl_write_x3d(gr,setExtension(fname,"svg").toAscii(), appName.toAscii());
setlocale(LC_NUMERIC, "");
}
-}
+}*/
//-----------------------------------------------------------------------------
void QMathGL::exportTGA(QString fname)
{
{ mglCanvasWnd *g = dynamic_cast<mglCanvasWnd *>(gr); if(g) g->Animation(); }\r
void mgl_setup_window(HMGL gr, int clf_upd, int showpos)\r
{ mglCanvasWnd *g = dynamic_cast<mglCanvasWnd *>(gr); if(g) g->Setup(clf_upd, showpos); }\r
+void mgl_set_click_func(HMGL gr, void (*func)(void *p))\r
+{ mglCanvasWnd *g = dynamic_cast<mglCanvasWnd *>(gr); if(g) g->ClickFunc = func; }\r
//-----------------------------------------------------------------------------\r
void mgl_wnd_toggle_alpha_(uintptr_t *gr)\r
{ mglCanvasWnd *g = dynamic_cast<mglCanvasWnd *>((HMGL)(*gr));\r
// mglDraw class handling\r
//\r
//-----------------------------------------------------------------------------\r
-int mgl_draw_class(mglBase *gr, void *p)\r
+int mgl_draw_class(mglBase *gr, void *p) // so stupid way to save mglDraw class inheritance :(\r
{\r
- mglGraph g(gr);\r
- mglWindow *w = (mglWindow *)p; // so stupid way to save mglDraw class inheritance :(\r
+ mglGraph g(gr); mglWindow *w = (mglWindow *)p;\r
return (w && w->dr) ? w->dr->Draw(&g) : 0;\r
}\r
-void mgl_reload_class(void *p)\r
-{\r
- mglWindow *w = (mglWindow *)p; // so stupid way to save mglDraw class inheritance :(\r
- if(w && w->dr) w->dr->Reload();\r
-}\r
+void mgl_reload_class(void *p) // so stupid way to save mglDraw class inheritance :(\r
+{ mglWindow *w = (mglWindow *)p; if(w && w->dr) w->dr->Reload();}\r
+void mgl_click_class(void *p) // so stupid way to save mglDraw class inheritance :(\r
+{ mglWindow *w = (mglWindow *)p; if(w && w->dr) w->dr->Click(); }\r
//-----------------------------------------------------------------------------\r
int mgl_draw_graph(mglBase *gr, void *p)\r
{\r